Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der beste Weg, LEFT OUTER JOIN zu verwenden, um zu überprüfen, ob verwandte Zeilen nicht vorhanden sind?

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

Du warst nah dran.

Führen Sie zuerst den Join wie gewohnt durch und wählen Sie dann alle Zeilen aus, für die ein not null ist Zeile in Y ist tatsächlich null , sodass Sie sicher sind, dass es eine "keine Übereinstimmung" und nicht nur eine null gibt Wert in Y.

Beachten Sie auch den Tippfehler (inzwischen korrigiert), den Sie in der Abfrage gemacht haben:

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