MySQL JOIN 多表连接
除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接。多表连接基本语法如下:
... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON condition INNER|LEFT|RIGHT JOIN table3 ON condition ...
JOIN 多表连接实现了从多个表中获取相关数据,下面是三个原始数据表:
article 文章表:
aid
title
content
uid
tid
1
文章1
文章1正文内容...
1
1
2
文章2
文章2正文内容...
1
2
3
文章3
文章3正文内容...
2
1
5
文章5
文章5正文内容...
4
1
user 用户表:
uid
username
1
admin
admin@5idev.com
2
小明
xiao@163.com
3
Jack
jack@gmail.com
type 文章类型表:
tid
typename
1
普通文章
2
精华文章
3
草稿
MySQL INNER JOIN 多表
我们使用 INNER JOIN 列出三个表中都具有关联关系的数据:
SELECT article.aid,article.title,user.username,type.typename FROM article INNER JOIN user
ON article.uid=user.uid INNER JOIN type ON article.tid=type.tid
返回查询结果如下:
aid
title
username
typename
1
文章1
admin
普通文章
2
文章2
admin
精华文章
3
文章3
小明
普通文章
MySQL LEFT JOIN 多表
SELECT article.aid,article.title,user.username,type.typename FROM article LEFT JOIN user
ON article.uid=user.uid LEFT JOIN type ON article.tid=type.tid
返回查询结果如下:
aid
title
username
typename
1
文章1
admin
普通文章
2
文章2
admin
精华文章
3
文章3
小明
普通文章
4
文章4
NULL
普通文章
MySQL RIGHT JOIN 多表
SELECT article.aid,article.title,user.username,type.typename FROM article RIGHT JOIN user
ON article.uid=user.uid RIGHT JOIN type ON article.tid=type.tid
返回查询结果如下:
aid
title
username
typename
1
文章1
admin
普通文章
2
文章2
admin
精华文章
3
文章3
小明
普通文章
NULL
NULL
NULL
草稿
可见,在 RIGHT JOIN 右连接中,只是列出最后一个右连接表的所有数据。
说明
对于 MySQL 多表 JOIN,还可以 INNER、LEFT 和 RIGHT 混用,其返回结果与各关键字顺序有关,感兴趣可自行测试。