SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
参数说明:
columns:要显示的列名。
table1:表1的名称。
table2:表2的名称。
column_name:表中用于连接的列名。
注释:INNER JOIN 与 JOIN 是相同的。
假设有两个表:Students 和 Enrollments。
Students 表:
StudentID
Name
Age
1
Alice
22
2
Bob
23
3
Charlie
24
Enrollments 表:
EnrollmentID
StudentID
Course
101
1
Math
102
2
Science
103
4
History
使用 INNER JOIN 查询
SELECT Students.Name,Enrollments.Course
FROM Students
INNER JOIN Enrollments
ON Students.StudentID=Enrollments.StudentID;
得到结果如下:
Name
Course
Alice
Math
Bob
Science
解释:INNER JOIN 返回的是 Students 和 Enrollments 表中 StudentID
匹配的数据。没有匹配上的记录(如 Charlie 和 EnrollmentID 为 103
的数据)将被排除。
演示数据库
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+| id | name | url | alexa | country |+----+--------------+---------------------------+-------+---------+|1|Google| https://www.google.cm/ | 1 | USA ||2|淘宝| https://www.taobao.com/ | 13 | CN ||3|菜鸟教程| http://www.runoob.com/ | 4689 | CN ||4|微博| http://weibo.com/ | 20 | CN ||5|Facebook| https://www.facebook.com/ | 3 | USA ||7| stackoverflow | http://stackoverflow.com/ | 0 | IND |+----+---------------+---------------------------+-------+---------+
下面是 "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 inset(0.00 sec)
SQL INNER JOIN 实例
下面的 SQL 语句将返回所有网站的访问记录:
实例
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;