SQL RIGHT JOINMots-clés

RIGHT JOIN est un mot-clé de jointure en SQL utilisé pour récupérer des données à partir de plusieurs tables.

Semblable à LEFT JOIN, mais son comportement est opposé : RIGHT JOIN retourne tous les enregistrements de la table de droite, même s'il n'y a aucun enregistrement correspondant dans la table de gauche.

Le mot-clé RIGHT JOIN retourne toutes les lignes de la table de droite (table2), même s'il n'y a aucune correspondance dans la table de gauche (table1). S'il n'y a aucune correspondance dans la table de gauche, le résultat est NULL.

Syntaxe de SQL RIGHT JOIN

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

Ou :

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

Remarque :Dans certaines bases de données, RIGHT JOIN est appelé RIGHT OUTER JOIN.

  • table1: table de gauche.
  • table2: table de droite,RIGHT JOINtous les enregistrements de cette table seront conservés.
  • ON table1.column_name=table2.column_name: spécifie la condition de jointure, généralement le champ commun des deux tables.

SQL RIGHT JOIN

Fonctionnalités

  • Conserver tous les enregistrements de la table de droite: même s'il n'y a pas d'enregistrements correspondants dans la table de gauche, tous les enregistrements de la table de droite seront inclus dans le résultat.
  • Remplir les colonnes de la table de gauche en cas d'absence de correspondanceNULL: S'il n'y a pas d'enregistrement correspondant dans la table de gauche, utilisezNULLpour remplir les colonnes de la table de gauche.

Supposons qu'il y ait deux tables :EmployeesetDepartments。

Table Employees:

EmployeeID Name DepartmentID
1 Alice 10
2 Bob 20
3 Charlie NULL

Table Departments:

DepartmentID DepartmentName
10 HR
20 Informatique
30 Finance

Requête avec RIGHT JOIN

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments
ON Employees.DepartmentID = Departments.DepartmentID;

Résultat de la requête:

Name DepartmentName
Alice HR
Bob Informatique
NULL Finance

Explication:RIGHT JOINA retournéDepartmentstous les enregistrements de la table. PourDepartmentID = 30enregistrements, carEmployeesil n'y a pas de données correspondantes dans la table, sonNamecolonne correspondante estNULL。

etLEFT JOINDifférences

  • LEFT JOIN: renvoie tous les enregistrements de la table de gauche, même s'il n'y a pas de correspondances dans la table de droite.
  • RIGHT JOIN: renvoie tous les enregistrements de la table de droite, même s'il n'y a pas de correspondances dans la table de gauche.

Base de données de démonstration

Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.

Avant de continuer, ajoutez d'abord un enregistrement à la table access_log qui n'a pas de données correspondantes dans la table Websites :

INSERT INTO `access_log` (`aid`, `site_id`, `count`, `date`) VALUES ('10', '6', '111', '2016-03-09');

Voici les données sélectionnées dans la table "Websites" :

+----+--------------+---------------------------+-------+---------+
| 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     |
+----+---------------+---------------------------+-------+---------+

Ci-dessous se trouvent les données de la table de journal d'accès au site Web "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)


Exemple de RIGHT JOIN SQL

L'instruction SQL suivante renverra les enregistrements d'accès du site Web.

Dans l'exemple suivant, nous utilisons Websites comme table de gauche et access_log comme table de droite :

Exemple

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;

L'exécution du code SQL ci-dessus produit le résultat suivant :

Remarque :Le mot-clé RIGHT JOIN renvoie toutes les lignes de la table de droite (access_log), même s'il n'y a aucune correspondance dans la table de gauche (Websites).


Autres extensions