我正在写这样的查询
SELECT *
FROM table
WHERE id IN (thousands of ids)
但这不起作用,因为我们的SQL Server版本上WHERE IN
的值限制为128.
有没有办法使用带有连接的子查询或临时表来执行此操作?
感谢任何帮助!
答案 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