mysql left join on or_关于 MySQL LEFT JOIN 不可不知的事

你认为自己已对 MySQL 的 LEFT JOIN 理解深刻,这篇文章,我想让你能多学会点东西!

ON 子句与 WHERE 子句的不同

一种更好地理解带有 WHERE ... IS NULL 子句的复杂匹配条件的简单方法

Matching-Conditions 与 Where-conditions 的不同

你一定知道关于 “A LEFT JOIN B ON 条件表达式” 的基础用法

ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。

如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据

在匹配阶段 WHERE 子句的条件都不会被使用。仅在匹配阶段完成以后,WHERE 子句条件才会被使用。它将从匹配阶段产生的数据中检索过滤。

例如:news 与 news_category表的结构如下,news表的category_id与news_category表的id是对应关系。

481839de3466cbe02f513fd9074558b9.png

显示news表记录,并显示news的category名称,查询语句如下

select a.id,a.title,b.name as category_name,a.content,a.addtime,a.lastmodify

from news as a left join news_category as b

on a.category_id= b.id;

因 news_category 表没有id=4的记录,因此news 表中category_id=4的记录的category_name=NULL

使用left join, A表与B表所显示的记录数为 1:1 或 1:0,A表的所有记录都会显示,B表只显示符合条件的记录。

但如果B表符合条件的记录数大于1条,就会出现1:n的情况,这样left join后的结果,记录数会多于A表的记录数。

例如:member与member_login_log表的结构如下,member记录会员信息,member_login_log记录会员每日的登入记录。member表的id与member_login_log表的uid是对应关系。

c959a2d2f2c7dc74e1f9a5d4e5d356a6.png

查询member用户的


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部