当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

2017年12月12日  | 移动技术网IT编程  | 我要评论

雀圣2之见钱眼开,黄山电大,红姐心水论坛

left join 语法用法与实例
mysql left join 语法
sql(mysql) left join 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录。left join 基本语法如下:

... from table1 left join table2 on condition ...

mysql left join 用法实例
下面是两个原始数据表:
article 文章表:

20151216115130281.png (641×129)

user 用户表:

20151216115300000.png (638×103)

我们列出所有的文章及对应的所属用户,即使没有用户的文章也列出。
select ... left join ... on 语句如下:

select article.aid,article.title,user.username from article left join user on article.uid = user.uid

返回查询结果如下:

20151216115324786.png (634×130)

可以看出来,与 inner join 明显的区别是,左表记录被全部取出,即使右表无对应匹配记录。
提示
这里所谓记录被“全部”取出,是相对于 inner join 的限制来说的。其实可以在上面的 sql 语句后面加个 where 条件或者 limit 等关键字以同一般 sql 语句一样对结果集做一个范围限制。
is null
在上面的例子中,对于右表中没有对应匹配的数据记录,其所有的列都被置为 null,因此要查询这部分记录(如在上面例子中体现为查找 aid=4 这类无对应用户的文章记录),可以附加 is null 条件:

select article.aid,article.title,user.username from article left join user 
on article.uid = user.uid where user.uid is null

right join 语法用法与实例
mysql right join 语法
sql(mysql) right join 会取得右表(table2)全部记录,即使左表(table2)并无对应匹配记录。right join 基本语法如下:

... from table1 right join table2 on condition ...

mysql right join 用法实例
下面是两个原始数据表:
article 文章表:

20151216115403445.png (642×130)

user 用户表:

20151216115453219.png (640×103)

我们列出所有的用户,以及他们可能拥有的文章。
select ... right join ... on 语句如下:

select article.aid,article.title,user.username from article right join user on article.uid = user.uid

返回查询结果如下:

20151216115512832.png (641×130)

对比 left join 返回的查询结果,right join 返回的结果与其刚好“相反”。
is null
在上面的例子中,对于左表中没有对应匹配的数据记录,其所有的列都被置为 null,因此要查询这部分记录(如在上面例子中体现为查找 username=jack 这类无对应文章的所有用户),可以附加 is null 条件:

select article.aid,article.title,user.username from article left join user 
on article.uid = user.uid where article.aid is null

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网