SQL Left Join effizient ausführen und Tabellendaten vorfiltern
Wenn Sie mit mehreren Tabellen arbeiten, ist es oft notwendig, eine der Tabellen zu filtern, bevor Sie sie zusammenführen. Dieses Beispiel umfasst zwei Tabellen: Customer und Entry.
Das Ziel besteht darin, die Eintragstabelle basierend auf einer bestimmten Kategorie „D“ zu filtern, bevor eine Linksverknüpfung zwischen diesen beiden Tabellen durchgeführt wird. Das erwartete Ergebnis ist: Alle Datensätze in der Kundentabelle abrufen, unabhängig davon, ob relevante Datensätze gleichzeitig in der Eingabetabelle vorhanden sind, Datensätze in der Eingabetabelle ausschließen, die die Kategoriebedingungen nicht erfüllen.
Die folgende SQL-Abfrage zeigt, wie dies erreicht wird:
<code class="language-sql">SELECT c.Customer, c.State, e.Entry FROM Customer c LEFT JOIN Entry e ON c.Customer=e.Customer AND e.Category='D'</code>
Durch das Verschieben der WHERE-Filterbedingung in die JOIN-Bedingung können wir vor dem Beitritt eine Kategoriefilterung auf die Eintragstabelle anwenden. Dadurch wird sichergestellt, dass nur Eintragsdatensätze, die die Kategoriekriterien erfüllen, in die Join-Ergebnisse einbezogen werden.
Beispieltabelle
<code>客户表 (Customer): ╔══════════╦═══════╗ ║ Customer ║ State ║ ╠══════════╬═══════╣ ║ A ║ S ║ ║ B ║ V ║ ║ C ║ L ║ ╚══════════╩═══════╝ 条目表 (Entry): ╔══════════╦═══════╦══════════╗ ║ Customer ║ Entry ║ Category ║ ╠══════════╬═══════╬══════════╣ ║ A ║ 5575 ║ D ║ ║ A ║ 6532 ║ C ║ ║ A ║ 3215 ║ D ║ ║ A ║ 5645 ║ M ║ ║ B ║ 3331 ║ A ║ ║ B ║ 4445 ║ D ║ ╚══════════╩═══════╩══════════╝</code>
Ergebnisse
<code>╔══════════╦═══════╦═══════╗ ║ Customer ║ State ║ Entry ║ ╠══════════╬═══════╬═══════╣ ║ A ║ S ║ 5575 ║ ║ A ║ S ║ 3215 ║ ║ B ║ V ║ 4445 ║ ║ C ║ L ║ NULL ║ ╚══════════╩═══════╩═══════╝</code>
Zusammenfassend lässt sich sagen, dass wir durch die Verwendung der AND-Klausel in der JOIN-Bedingung die Tabellen filtern können, bevor wir sie verknüpfen, und so Daten präziser auf der Grundlage der angegebenen Bedingungen abrufen.
Das obige ist der detaillierte Inhalt vonWie führe ich einen Left Join mit einer vorgefilterten Tabelle in SQL durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!