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