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

¿Cuál es la mejor manera de usar LEFT OUTER JOIN para verificar la inexistencia de filas relacionadas?

SELECT count(id) FROM X 
LEFT OUTER JOIN Y ON (y.X_id = X.id AND y.foo = 'bar')
WHERE y.X_id is null

Estuviste cerca.

Primero haga la unión como de costumbre, luego seleccione todas las filas para las que not null fila en Y es de hecho null , por lo que está seguro de que hay una "no coincidencia" y no solo un null valor en Y.

También tenga en cuenta el error tipográfico (ya corregido) que hizo en la consulta:

LEFT OUTER JOIN Y AS
-- should be
LEFT OUTER JOIN Y ON
-- This however is allowed
LEFT OUTER JOIN table2 as Y ON ....