我们观察到似乎有一个最大数量的id /变量,可以在SQL的IN子句中以逗号分隔值传递。为了避免这种情况,我们将所有id存储在表中并在IN子句中执行SELECT。然而,这意味着额外的数据库操作来存储和检索id。在没有SELECT的情况下还有其他方法可以使用IN吗?
此致
萨米尔
答案 0 :(得分:2)
在SQL Server 2008
中,您可以声明一个表变量,并将其传递给客户端或程序之间的查询。
答案 1 :(得分:2)
对于适度数量的值,我不会认为IN (SELECT ..)
在任何rdbms上都是昂贵的。
您可以INNER JOIN
ID表或只是分解IN:
WHERE X IN (123,456 ...)
OR X IN (789,987 ...)
...
答案 2 :(得分:2)
同意Alex
而不是
Select * From TableA Where ID IN (Select ID from IDTable)
使用
Select * From TableA
INNER JOIN IDTable ON TableA.ID = IDTable.ID
联接会自动为您过滤ID。
答案 3 :(得分:0)
如果你把它放在一个表中为什么还在使用in子句,为什么不加入表呢?