SELECT something
FROM someTable
WHERE idcode NOT IN (SELECT ids FROM tmpIdTable)
vérifie par rapport à n'importe quelle valeur de la liste.
Cependant, NOT IN n'est pas tolérant à NULL. Si la sous-requête renvoyait un ensemble de valeurs contenant NULL, aucun enregistrement ne serait renvoyé. (C'est parce qu'en interne le NOT IN est optimisé pour idcode <> 'foo' AND idcode <> 'bar' AND idcode <> NULL
etc., qui échouera toujours car toute comparaison avec NULL donne UNKNOWN, empêchant l'expression entière de devenir TRUE.)
Une variante plus agréable et tolérante à NULL serait celle-ci :
SELECT something
FROM someTable
WHERE NOT EXISTS (SELECT ids FROM tmpIdTable WHERE ids = someTable.idcode)
EDIT :J'ai d'abord supposé que ceci :
SELECT something
FROM someTable
WHERE idcode <> (SELECT ids FROM tmpIdTable)
vérifierait par rapport à la première valeur uniquement. Il s'avère que cette hypothèse est fausse au moins pour SQL Server, où elle déclenche en fait son erreur :
Msg 512, Level 16, State 1, Line 1 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.