Eine Möglichkeit besteht darin, diese Werte in einen Tabellenparameter, eine CTE oder eine temporäre Tabelle einzugeben und dann den linken Join mit der tatsächlichen Tabelle zu verwenden. Eine weitere Möglichkeit besteht darin, die Werte Klausel zu verwenden:
Erstellen und Probentisch (Bitte speichern uns diesen Schritt in Ihrer zukünftigen Fragen)
DECLARE @T as TABLE
(
Id int
)
INSERT INTO @T VALUES (1), (2), (3), (4)
Die Abfrage füllen:
SELECT v.Id
FROM (VALUES (1), (2), (3), (5), (6)) AS v(Id) -- Use this instead of the IN operator
LEFT JOIN @T T ON v.Id = T.Id
WHERE T.Id IS NULL
Ergebnisse :
Id
-----------
5
6
Eine weitere Option ist UNION
, um Ihre Werte zu erstellen:
SELECT v.Id
FROM (
SELECT 1 As Id
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
UNION
SELECT 6
) AS v -- Use this instead of the IN operator
LEFT JOIN @T T ON v.Id = T.Id
WHERE T.Id IS NULL
Diese 1000 IDs in eine temporäre Tabelle einfügen. NICHT VORHANDEN. – jarlh
Und wenn Sie NULL für die ID nicht interessiert, dann NICHT IN. – DVT