2014-07-17 30 views
-3

我试图改变这个是动态的,但我还是坚持在数据集..
例如,语句我如何将此语句更改为动态SQL?

SELECT * FROM一个
WHERE ID IN(1,2)

,也1,2-来自
SELECT ID FROM乙
WHERE类型= '%XXX%'

声明以上可以返回许多数
我试图声明@id但我没有ID ea

所以,有什么想法?
感谢您的建议:)

+0

建议一个结果集,请重写的问题,所以我可以读取它。 – Jodrell

+0

你要澄清这个问题。我不明白你问什么 – gazzwi86

回答

0
SELECT * FROM A 
WHERE id IN (
    SELECT id FROM B 
    WHERE type='%xxx%') 

这就是所谓的subquery

编辑:当使用子查询不是一个选项,你想使用一个变量,你可以声明一个临时表,并加入表A与该表。

DECLARE @C table (id int) 

INSERT @C (id) 
SELECT id FROM B 
WHERE type='%xxx%' 

SELECT A.* 
FROM A INNER JOIN @C c ON A.id = c.id 
+0

谢谢,但如果在这种情况下,我不能使用子查询(出于某种原因)我如何可以声明ID为ID IN(1,2)的ID? – zzhe

+0

我添加了一个使用临时表作为变量的解决方案。 – Simon

0
SELECT A.* FROM A 
INNER JOIN B 
WHERE B.type='%xxx%' 
AND A.ID = B.ID 

也许你可以使用内部联接,它应该返回你,你在看