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.

SQL INNER JOIN

Angenommen, es gibt zwei Tabellen: Students und Enrollments.

Students-Tabelle:

StudentIDNameAlter
1Alice22
2Bob23
3Charlie24

Enrollments-Tabelle:

EnrollmentIDStudentIDCourse
1011Math
1022Naturwissenschaft
1034Verlauf

Abfrage mit INNER JOIN

SELECT Students.Name, Enrollments.Course
FROM Students
INNER JOIN Enrollments
ON Students.StudentID = Enrollments.StudentID;

Das Ergebnis ist wie folgt:

NameCourse
AliceMath
BobNaturwissenschaft

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

SELECT Websites.name, access_log.count, access_log.date
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