SQL Server:如何解决WHERE IN限制的128个值

时间:2016-05-03 19:11:32

标签: sql sql-server

我正在写这样的查询

SELECT *
FROM table
WHERE id IN (thousands of ids)

但这不起作用,因为我们的SQL Server版本上WHERE IN的值限制为128.

有没有办法使用带有连接的子查询或临时表来执行此操作?

感谢任何帮助!

3 个答案:

答案 0 :(得分:5)

您可以使用VALUES来构建包含要考虑的所有值的内联表,然后JOIN到此表:

SELECT t1.*
FROM table AS t1
INNER JOIN (VALUES (10), (20), (12), ... ) AS t2(id) 
ON t1.id = t2.id

答案 1 :(得分:3)

将它们放在临时表和

SELECT *
FROM table
WHERE id IN (SELECT id from #Table_of_thousands_of_ids)

答案 2 :(得分:1)

您应该使用临时表,在其中插入所有ID,然后与表格进行内部联接

DECLARE @tmpTable TABLE
(
  Id int
)

Insert into @tmpTable (id) values (1), (2), (3)

SELECT *
FROM [table]
Inner join @tmpTable on [table].id = @tmpTable.id