SQL INNER JOINSchlüsselwörter
INNER JOIN ist eine der am häufigsten verwendeten Join-Methoden in SQL und wird verwendet, um übereinstimmende Datensätze aus mehreren Tabellen basierend auf ihren Beziehungen zu extrahieren.
Das INNER JOIN-Schlüsselwort gibt Zeilen zurück, wenn es mindestens eine Übereinstimmung in den Tabellen gibt. Es gibt die Schnittmenge der beiden Tabellen zurück, die die Join-Bedingung erfüllt, d. h. Daten, die in beiden Tabellen vorhanden sind.
SQL INNER JOIN-Syntax
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
Oder:
SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;
Parameter description:
- columns: Die Spaltennamen, die angezeigt werden sollen.
- table1: Der Name von table1.
- table2: Der Name von table2.
- column_name: Der Spaltenname, der für den Join in den Tabellen verwendet wird.
Hinweis:INNER JOIN ist dasselbe wie JOIN.

Angenommen, es gibt zwei Tabellen: Students und Enrollments.
Students-Tabelle:
| StudentID | Name | Alter |
|---|---|---|
| 1 | Alice | 22 |
| 2 | Bob | 23 |
| 3 | Charlie | 24 |
Enrollments-Tabelle:
| EnrollmentID | StudentID | Course |
|---|---|---|
| 101 | 1 | Math |
| 102 | 2 | Naturwissenschaft |
| 103 | 4 | Verlauf |
Abfrage mit INNER JOIN
SELECT Students.Name, Enrollments.Course FROM Students INNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentID;
Das Ergebnis ist wie folgt:
| Name | Course |
|---|---|
| Alice | Math |
| Bob | Naturwissenschaft |
Erklärung:INNER JOINWas zurückgegeben wirdStudentsundEnrollmentsaus den TabellenStudentIDsind die übereinstimmenden Daten. Datensätze ohne Übereinstimmung (wie Charlie und der Datensatz mit EnrollmentID 103) werden ausgeschlossen.
Demonstrationsdatenbank
In diesem Tutorial verwenden wir die Beispieldatenbank EXAMPLE.
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 | +----+---------------+---------------------------+-------+---------+
Nachfolgend sind Daten aus der Website-Zugriffsprotokoll-Tabelle "access_log" 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 INNER JOIN Beispiel
Die folgende SQL-Anweisung gibt die Zugriffsdatensätze aller Websites zurück:
Beispiel
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;
Das Ausführen des obigen SQL liefert die folgenden Ergebnisse:
Hinweis:Das INNER JOIN-Schlüsselwort gibt Zeilen zurück, wenn mindestens eine Übereinstimmung in den Tabellen vorhanden ist. Wenn eine Zeile in der Tabelle "Websites" keine Übereinstimmung in "access_log" hat, werden diese Zeilen nicht aufgeführt.
Andere Erweiterungen