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.

SQL RIGHT JOIN

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 istNULL: 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

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

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