Die Besonderheiten von Left Joins und WHERE-Klauseln
Bei der Durchführung von Datenabrufvorgängen verwenden Entwickler häufig Left Joins, um Informationen aus mehreren Tabellen zu kombinieren. Bei der Verwendung einer WHERE-Klausel in Verbindung mit einem Left-Join entsteht jedoch eine häufige Gefahr, die möglicherweise das Verhalten des Left-Joins verändert.
Betrachten Sie die folgende SQL-Anweisung:
SELECT a.foo b.bar c.foobar FROM tableOne AS a INNER JOIN tableTwo AS b ON a.pk = b.fk LEFT JOIN tableThree AS c ON b.pk = c.fk WHERE a.foo = 'something' AND c.foobar = 'somethingelse'
Intuitiv würde man das tun Erwarten Sie, dass diese Anweisung eine Linksverknüpfung zwischen tableThree und tableTwo durchführt und eine Filterbedingung für c.foobar angibt. Das Vorhandensein der WHERE-Klausel mit c.foobar = 'somethingelse' ändert jedoch versehentlich die Eigenschaften des linken Joins.
Wenn ein Wert von der rechten Seite eines linken Joins (in diesem Fall c.foobar) ist In der WHERE-Klausel enthalten, werden nur Zeilen in die Ergebnismenge aufgenommen, deren Wert NICHT NULL ist. Somit verhält sich der linke Join effektiv wie ein innerer Join und eliminiert alle Zeilen mit NULL-Werten für c.foobar.
Um das beabsichtigte Verhalten des linken Joins im obigen Beispiel beizubehalten, kann man eine der folgenden Methoden anwenden Ansätze:
Das obige ist der detaillierte Inhalt vonLeft Joins und WHERE-Klauseln: Wie interagieren sie und wie kann ich unerwartete Ergebnisse vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!