SQL RIGHT JOINSchlüsselwörter
RIGHT JOIN ist ein JOIN-Schlüsselwort in SQL, das verwendet wird, um Daten aus mehreren Tabellen abzurufen.
Ähnlich wie LEFT JOIN, aber das Verhalten ist entgegengesetzt: RIGHT JOIN gibt alle Datensätze aus der rechten Tabelle zurück, auch wenn es keine übereinstimmenden Datensätze in der linken Tabelle gibt.
Das RIGHT JOIN-Schlüsselwort gibt alle Zeilen aus der rechten Tabelle (table2) zurück, auch wenn es keine Übereinstimmungen in der linken Tabelle (table1) gibt. Wenn es keine Übereinstimmungen in der linken Tabelle gibt, ist das Ergebnis NULL.
SQL RIGHT JOIN-Syntax
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
Oder:
SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name;
Hinweis:In einigen Datenbanken wird RIGHT JOIN als RIGHT OUTER JOIN bezeichnet.
- table1: linke Tabelle.
- table2: rechte Tabelle,
RIGHT JOINAlle Datensätze aus dieser Tabelle werden beibehalten. - ON table1.column_name=table2.column_name: gibt die Join-Bedingung an, normalerweise das gemeinsame Feld der beiden Tabellen.

Funktionen
- Alle Datensätze aus der rechten Tabelle beibehalten: Selbst wenn es keine übereinstimmenden Datensätze in der linken Tabelle gibt, werden alle Datensätze aus der rechten Tabelle in das Ergebnis aufgenommen.
- Linke Tabellenspalten füllen, wenn keine Übereinstimmung vorhanden ist
NULL: Wenn es keinen entsprechenden Datensatz in der linken Tabelle gibt, verwenden SieNULLzum Füllen der linken Tabellenspalten.
Angenommen, es gibt zwei Tabellen:EmployeesundDepartments。
Employees-Tabelle:
| EmployeeID | Name | DepartmentID |
|---|---|---|
| 1 | Alice | 10 |
| 2 | Bob | 20 |
| 3 | Charlie | NULL |
Departments-Tabelle:
| DepartmentID | DepartmentName |
|---|---|
| 10 | HR |
| 20 | IT |
| 30 | Finanzen |
Abfrage mit RIGHT JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
Abfrageergebnis:
| Name | DepartmentName |
|---|---|
| Alice | HR |
| Bob | IT |
| NULL | Finanzen |
Erklärung:RIGHT JOINZurückgegebenDepartmentsalle Datensätze in der Tabelle. FürDepartmentID = 30Datensätze, daEmployeeses gibt keine übereinstimmenden Daten in der Tabelle, ihreNameSpalte istNULL。
undLEFT JOINUnterschiede
LEFT JOIN: gibt alle Datensätze aus der linken Tabelle zurück, auch wenn es keine Übereinstimmungen in der rechten Tabelle gibt.RIGHT JOIN: gibt alle Datensätze aus der rechten Tabelle zurück, auch wenn es keine Übereinstimmungen in der linken Tabelle gibt.
Demo-Datenbank
In diesem Tutorial verwenden wir die Beispieldatenbank EXAMPLE.
Bevor Sie fortfahren, fügen Sie zunächst einen Datensatz zur Tabelle access_log hinzu, der keine entsprechenden Daten in der Tabelle Websites hat:
INSERT INTO `access_log` (`aid`, `site_id`, `count`, `date`) VALUES ('10', '6', '111', '2016-03-09');
Nachfolgend sind 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 finden Sie Daten aus der Website-Zugriffsprotokolltabelle "access_log":
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 | | 10 | 6 | 111 | 2016-03-19 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Beispiel für SQL RIGHT JOIN
Die folgende SQL-Anweisung gibt die Zugriffsdatensätze der Website zurück.
Im folgenden Beispiel verwenden wir Websites als linke Tabelle und access_log als rechte Tabelle:
Beispiel
Die Ausführung der obigen SQL liefert das folgende Ergebnis:
Hinweis:Das RIGHT JOIN-Schlüsselwort gibt alle Zeilen aus der rechten Tabelle (access_log) zurück, auch wenn es keine Übereinstimmungen in der linken Tabelle (Websites) gibt.
Weitere Erweiterungen