Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo migliore per utilizzare LEFT OUTER JOIN per verificare la non esistenza di righe correlate

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

Eri vicino.

Per prima cosa esegui il join come di consueto, quindi seleziona tutte le righe per le quali un not null la riga in Y è infatti null , quindi sei sicuro che ci sia una "nessuna corrispondenza" e non solo un null valore in Y.

Nota anche l'errore di battitura (poiché corretto) che hai fatto nella query:

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