【问题标题】:How i change this statement to dynamic SQL?我如何将此语句更改为动态 SQL?
【发布时间】:2014-09-08 02:23:25
【问题描述】:

我试图将其更改为动态的,但我卡在了一组数据中..
例如,语句

从 A 中选择 *
编号在 (1,2) 中的位置

还有 1,2 来自
从 B 中选择 ID
WHERE type='%xxx%'

上面的语句可以返回多个数字
我尝试声明@id,但我不知道

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

【问题讨论】:

  • 建议一,请改写问题,以便我阅读。
  • 你想要澄清这个问题。我不明白你在问什么

标签: sql dynamic-sql


【解决方案1】:
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

【讨论】:

  • 谢谢,但如果在这种情况下我不能使用子查询(由于某种原因)我如何为 id IN (1,2) 声明@id?
  • 我添加了一个使用临时表作为变量的解决方案。
【解决方案2】:
SELECT A.* FROM A 
INNER JOIN B
WHERE B.type='%xxx%'
AND A.ID = B.ID

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2017-08-23
    • 2012-09-24
    • 2020-06-15
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多