SQL Server: comment contourner WHERE IN limite de 128 valeurs

J'écris une requête comme celle-ci

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

mais cela ne fonctionnera pas car la limite de valeurs pour le WHERE IN est 128 sur notre version de SQL Server.

Y at-il un moyen de le faire en utilisant une sous-requête avec une jointure, ou peut-être une table temporaire?

Toute aide est appréciée!

Vous pouvez utiliser VALUES afin de build une table en ligne contenant toutes les valeurs à considérer, puis JOIN à cette table:

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

Placez-les dans la table temporaire et

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

Vous devriez utiliser une table temporaire, dans laquelle vous allez insert tous vos identifiants, puis faire une jointure interne avec votre table

 DECLARE @tmpTable TABLE ( Id int ) Insert into @tmpTable (id) values (1), (2), (3) SELECT * FROM [table] Inner join @tmpTable on [table].id = @tmpTable.id