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

MySQL Left Outer Join mit where-Klausel - gibt nicht übereinstimmende Zeilen zurück

Ja. Das where -Klausel verwandelt den linken äußeren Join in einen inneren Join.

Wieso den? Der Wert von pe.pqid ist NULL (ebenso wie pe.uid ) wenn es keine Übereinstimmung gibt. Also der Vergleich im where -Klausel schlägt fehl (fast alle Vergleiche mit NULL gibt NULL zurück was als falsch angesehen wird).

Die Lösung besteht darin, den Vergleich nach on zu verschieben Klausel:

SELECT pq.id, pq.data, pe.data
FROM pq LEFT OUTER JOIN
     pe
     ON pq.id = pe.pqid and
        pe.uid='12345'
ORDER BY pq.id LIMIT 2