首先我们先看两个例子:
我们有一张基础表 user_info

还有一张扩展表

下面看各种sql语句以及查询结果
- SELECT ui.* ,ue.phone FROM user_info ui LEFT JOIN user_extend ue ON ui.id = ue.user_id
结果:
分析:很简单的左连接,数据都是正常的
-
SELECT ui.* ,ue.phone FROM user_info ui LEFT JOIN user_extend ue ON ui.id = ue.user_id WHERE ui.name=ue.user_name
结果:
分析:条件加到where后面会对整个结果集进行筛选,也就是说右表的条件也会对左表的行进行筛选,其实也就是内连接了
- SELECT ui.* ,ue.phone FROM user_info ui LEFT JOIN user_extend ue ON ui.id = ue.user_id AND ui.`name`=ue.user_name
结果:
分析:条件加到on后面会对右表数据进行筛选,如果不满足条件则结果集右表数据为空但不影响左表的数据,也就是左边一定会有,右边不一定会有;还有一种情况就是右边如果有多行数据满足条件,那么查出来就会有多条结果集,比如我们把user_extend表改成这样:
那么结果集就是:

本文通过具体案例解析SQL左连接(left join)的使用方法,对比条件放置在WHERE与ON子句的区别,深入理解如何正确应用左连接进行数据查询。
3382

被折叠的 条评论
为什么被折叠?



