MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程
left join 语法用法与实例
mysql left join 语法
sql(mysql) left join 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录。left join 基本语法如下:
... from table1 left join table2 on condition ...
mysql left join 用法实例
下面是两个原始数据表:
article 文章表:
user 用户表:
我们列出所有的文章及对应的所属用户,即使没有用户的文章也列出。
select ... left join ... on 语句如下:
select article.aid,article.title,user.username from article left join user on article.uid = user.uid
返回查询结果如下:
可以看出来,与 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 文章表:
user 用户表:
我们列出所有的用户,以及他们可能拥有的文章。
select ... right join ... on 语句如下:
select article.aid,article.title,user.username from article right join user on article.uid = user.uid
返回查询结果如下:
对比 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
上一篇: Python字符串格式化的方法(两种)
推荐阅读
-
MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程
-
MySQL的LEFT JOIN表连接的进阶学习教程
-
MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程
-
MySQL left join 左连接的通俗理解
-
数据库中的左连接(left join)和右连接(right join)区别
-
sql 左连接和右连接的使用技巧(left join and right join)
-
MySQL的LEFT JOIN表连接的进阶学习教程_MySQL
-
MySQL的LEFT JOIN表连接的进阶学习教程_MySQL
-
数据库中的左连接(left join)和右连接(right join)区别
-
sql 左连接和右连接的使用技巧(left join and right join)