我如何将此语句更改为动态SQL?

时间:2014-07-17 09:29:01

标签: sql dynamic-sql

我试图将其更改为动态,但我坚持使用数据集。
例如,声明

SELECT * FROM A
WHERE id IN(1,2)

并且1,2来自于 SELECT id FROM B
WHERE type ='%xxx%'

上面的陈述可以返回多个号码 我尝试声明@id,但我不知道

所以,有什么想法吗?
谢谢你的建议:)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

也许您可以使用内连接,它应该返回您查看的结果集