Encontrar filas sin coincidencia en SQL
El anti join: un outer join, y luego quedarte solo con las filas que no coincidieron.
SELECT
c.id,
c.name
FROM customers AS c
LEFT JOIN orders AS o
ON o.customer_id = c.id
WHERE o.id IS NULL;
SELECT
c.id,
c.name
FROM customers AS c
WHERE NOT EXISTS (
SELECT 1
FROM orders AS o
WHERE o.customer_id = c.id
);
Cómo funciona
LEFT JOINrellena con NULL el lado derecho de las filas sin pareja.WHERE right.key IS NULLconserva exactamente esas filas sin coincidencia.NOT EXISTSdice lo mismo y normalmente se planifica igual.
Palabras clave y builtins usados aquí
ASEXISTSFROMISJOINLEFTNOTNULLONSELECTWHEREc
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 221
- Tokens
- 64
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 45 segundos.
Paso 8 de 9 en Joins; paso 16 de 22 en Joins y agregación.