tablas - Cómo escribir una consulta SQL "no en()" usando join
optimizar consultas mysql explain (3)
Este artículo:
puede ser de interés para usted.
En un par de palabras, esta consulta:
SELECT d1.short_code
FROM domain1 d1
LEFT JOIN
domain2 d2
ON d2.short_code = d1.short_code
WHERE d2.short_code IS NULL
funcionará pero es menos eficiente que un constructo NOT NULL
(o NOT EXISTS
).
También puedes usar esto:
SELECT short_code
FROM domain1
EXCEPT
SELECT short_code
FROM domain2
Esto no usa ni NOT IN
ni WHERE
(¡e incluso ninguna unión!), Pero esto eliminará todos los duplicados en domain1.short_code
si hay alguno.
¿Podría alguien proporcionar por favor cómo escribir la siguiente consulta SQL usando combinaciones? No deseo el uso no tan bien como sea posible. Me gustaría reemplazar también la condición.
SELECT d1.Short_Code
FROM domain1 d1
WHERE d1.Short_Code NOT IN (
SELECT d2.Short_Code
FROM Domain2 d2
)
Estoy usando SQL Server 2008
Optaría por NOT EXISTS
en este caso.
SELECT D1.ShortCode
FROM Domain1 D1
WHERE NOT EXISTS
(SELECT ''X''
FROM Domain2 D2
WHERE D2.ShortCode = D1.ShortCode
)
SELECT d1.Short_Code
FROM domain1 d1
LEFT JOIN domain2 d2
ON d1.Short_Code = d2.Short_Code
WHERE d2.Short_Code IS NULL