SQL LEFT JOINSchlüsselwörter

LEFT JOIN ist ein Join-Schlüsselwort in SQL, mit dem Daten aus mehreren Tabellen extrahiert werden.

Der Unterschied zwischen LEFT JOIN und INNER JOIN besteht darin, dass LEFT JOIN alle Datensätze aus der linken Tabelle zurückgibt, selbst wenn es keine übereinstimmenden Datensätze in der rechten Tabelle gibt.

Das LEFT JOIN-Schlüsselwort gibt alle Zeilen aus der linken Tabelle (table1) zurück, selbst wenn es keine Übereinstimmungen in der rechten Tabelle (table2) gibt. Wenn es keine Übereinstimmung in der rechten Tabelle gibt, ist das Ergebnis NULL.

SQL LEFT JOIN-Syntax

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

Oder:

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

Hinweis:In einigen Datenbanken wird LEFT JOIN als LEFT OUTER JOIN bezeichnet.

  • table1: linke Tabelle (Primärtabelle),LEFT JOINalle Datensätze dieser Tabelle werden beibehalten.
  • table2: rechte Tabelle (sekundäre Tabelle), wenn keine übereinstimmenden Daten vorhanden sind, verwenden SieNULL, um die entsprechenden Spalten zu füllen.
  • ON table1.column_name=table2.column_name: Geben Sie die Join-Bedingung an, normalerweise das gemeinsame Feld der beiden Tabellen.

SQL LEFT JOIN

Funktionen:

  • Gibtalle Datensätze in der linken Tabellezurück, auch wenn die rechte Tabelle keine übereinstimmenden Daten enthält.
  • Wenn die rechte Tabelle keinen übereinstimmenden Datensatz hat, werden die Felder der rechten Tabelle für diese Zeile im ErgebnisNULL。

Angenommen, es gibt zwei Tabellen:CustomersundOrders。

Customers-Tabelle:

CustomerID Name
1 Alice
2 Bob
3 Charlie
4 David

Orders-Tabelle:

OrderID CustomerID Produkt
101 1 Laptop
102 2 Smartphone

Abfrage mit LEFT JOIN:

SELECT Customers.Name, Orders.Product
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

Abfrageergebnis:

Name Produkt
Alice Laptop
Bob Smartphone
Charlie NULL
David NULL

Erklärung:LEFT JOINzurückgegebenCustomersalle Datensätze in der Tabelle. FürCharlieundDavid, weil inOrdersTabelle gibt es keine passendeCustomerID, ihre entsprechendeProductSpalte istNULL。


Demo-Datenbank

In diesem Tutorial verwenden wir die Beispieldatenbank EXAMPLE.

Nachfolgend sind die Daten aufgeführt, die aus der Tabelle "Websites" ausgewählt wurden:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | Example      | http://www.example.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Im Folgenden sind die Daten aus der Zugriffsprotokoll-Tabelle "access_log" der Website aufgeführt:

mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)

SQL LEFT JOIN Beispiel

Die folgende SQL-Anweisung gibt alle Websites und ihre Besuchszahlen zurück (falls vorhanden).

Im folgenden Beispiel verwenden wir Websites als linke Tabelle und access_log als rechte Tabelle:

Beispiel

SELECT Websites.name, access_log.count, access_log.date
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;

Nach Ausführung des obigen SQL sind die Ausgabeergebnisse wie folgt:

Hinweis:Das LEFT JOIN-Schlüsselwort gibt alle Zeilen aus der linken Tabelle (Websites) zurück, auch wenn es keine Übereinstimmungen in der rechten Tabelle (access_log) gibt.

Andere Erweiterungen