sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué INNER JOIN no es igual (! =) colgar para siempre

Digamos su primera INNER JOIN devuelve el 75 % de las 1 000 000 filas en table1 . La segunda consulta no devuelve las otras 250.000 filas como cree. En su lugar, intenta crear un producto cartesiano y eliminar las 750 000 filas coincidentes. Por lo tanto, intenta devolver 6 000 000 × 1 000 000-750 000 filas. Ese es un conjunto de resultados de fila abultado de 6 × 10.

Probablemente quieras esto:

SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL

Esto devuelve filas en table1 no presente en table2 .

También te puede interesar FULL OUTER JOIN :

SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number IS NULL

Esto devuelve filas en ambas tablas que no tienen una coincidencia en la otra tabla.