SQL INNER JOINMots-clés
INNER JOIN est l'une des méthodes de jointure les plus couramment utilisées en SQL, utilisée pour extraire des enregistrements correspondants de plusieurs tables en fonction de leurs relations.
Le mot-clé INNER JOIN renvoie des lignes lorsqu'il y a au moins une correspondance dans les tables. Il renvoie l'intersection des deux tables qui satisfait la condition de jointure, c'est-à-dire les données qui existent dans les deux tables.
Syntaxe de SQL INNER JOIN
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
Ou :
SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;
Description du paramètre :
- columns : Les noms des colonnes à afficher.
- table1 : Le nom de table1.
- table2 : Le nom de table2.
- column_name : Le nom de colonne utilisé pour la jointure dans les tables.
Remarque :INNER JOIN est identique à JOIN.

Supposons qu'il y ait deux tables : Students et Enrollments.
Table Students:
| StudentID | Name | Âge |
|---|---|---|
| 1 | Alice | 22 |
| 2 | Bob | 23 |
| 3 | Charlie | 24 |
Table Enrollments:
| EnrollmentID | StudentID | Course |
|---|---|---|
| 101 | 1 | Math |
| 102 | 2 | Science |
| 103 | 4 | Historique |
Requête utilisant INNER JOIN
SELECT Students.Name, Enrollments.Course FROM Students INNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentID;
Le résultat est le suivant :
| Name | Course |
|---|---|
| Alice | Math |
| Bob | Science |
Explication:INNER JOINCe qui est renvoyéStudentsetEnrollmentsdes tablesStudentIDest constitué des données correspondantes. Les enregistrements sans correspondance (comme Charlie et l'enregistrement avec EnrollmentID 103) seront exclus.
Base de données de démonstration
Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.
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 des enregistrements 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 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Exemple d'INNER JOIN SQL
L'instruction SQL suivante renverra les enregistrements d'accès de tous les sites Web :
Exemple
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;
L'exécution de la requête SQL ci-dessus produit les résultats suivants :
Remarque :Le mot-clé INNER JOIN renvoie des lignes lorsqu'il y a au moins une correspondance dans les tables. Si une ligne de la table "Websites" n'a pas de correspondance dans "access_log", ces lignes ne seront pas listées.
Autres extensions