MySQL JOIN 的分类
- inner join(内连接):取得两个表中存在连接匹配关系的记录
- left join (左连接):以左表为基准(取左表所有记录),右表匹配向左表
- right join(右连接):与left join 相反
article 文章表:
aid | title | content | uid |
---|---|---|---|
1 | 文章1 | 文章1正文内容… | 1 |
2 | 文章2 | 文章2正文内容… | 1 |
3 | 文章3 | 文章3正文内容… | 2 |
4 | 文章4 | 文章4正文内容… | 4 |
user 用户表:
uid | username | |
---|---|---|
1 | admin | admin@5idev.com |
2 | 小明 | xiao@163.com |
3 | Jack | jack@gmail.com |
inner join:
SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid
结果table1:
aid | title | username |
---|---|---|
1 | 文章1 | admin |
2 | 文章2 | admin |
3 | 文章3 | 小明 |
可以看到 没有 article.aid 这项的记录。因为 此项记录的article.uid = 4 在user 表中 没有 匹配项。
lefe join:
SELECT article.aid,article.title,user.username FROM article LEFT JOIN user ON article.uid = user.uid
结果table2:
aid | title | username |
---|---|---|
1 | 文章1 | admin |
2 | 文章2 | admin |
3 | 文章3 | 小明 |
4 | 文章4 | NULL |
比较 table1,table2可以看到 两者的区别, 其中 article.aid = 4 在表中存在,其中article.username = null(右表中没有对应匹配的数据记录,其所有的列都被置为 NULL).