Quelqu'un pourrait-il s'il vous plaît fournir comment écrire la requête SQL suivante à l'aide de jointures. Je ne veux pas utiliser pas dans aussi bien que possible, je voudrais aussi remplacer où condition.
SELECT d1.Short_Code
FROM domain1 d1
WHERE d1.Short_Code NOT IN (
SELECT d2.Short_Code
FROM Domain2 d2
)
J'utilise SQL Server 2008
Cet article:
peut être si vous intéresse.
En quelques mots, cette requête:
SELECT d1.short_code
FROM domain1 d1
LEFT JOIN
domain2 d2
ON d2.short_code = d1.short_code
WHERE d2.short_code IS NULL
fonctionnera mais il est moins efficace qu'un NOT NULL
(ou NOT EXISTS
) construire.
Vous pouvez également utiliser ceci:
SELECT short_code
FROM domain1
EXCEPT
SELECT short_code
FROM domain2
Cela n'utilise ni NOT IN
ni WHERE
(et même pas de jointures!), mais cela supprimera tous les doublons sur domain1.short_code
si seulement.
SELECT d1.Short_Code
FROM domain1 d1
LEFT JOIN domain2 d2
ON d1.Short_Code = d2.Short_Code
WHERE d2.Short_Code IS NULL
J'opterais pour NOT EXISTS
dans ce cas.
SELECT D1.ShortCode
FROM Domain1 D1
WHERE NOT EXISTS
(SELECT 'X'
FROM Domain2 D2
WHERE D2.ShortCode = D1.ShortCode
)