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

Warum gibt der LEFT JOIN von MySQL NULL-Datensätze zurück, wenn er eine WHERE-Klausel enthält?

Eine Left-Join-Bedingung und Where-Bedingungsfilter sind nicht beide gleich. Die Daten werden durch die where-Klausel gefiltert, nachdem die physische Verknüpfung erfolgt ist. Wenn Sie einen linken Join suchen, gibt er normalerweise jede Zeile aus Ihrer linken Tabelle zurück, aber sobald Sie eine where-Klausel haben, wird die Ausgabe des Joins gefiltert, sodass das Ergebnis wie ein innerer Join ist. Konzentrieren Sie sich auf die beiden Diagramme auf der linken Seite des Bildes unten.