mysql 左链接 left join 条件写在where 后面与 on后面的区别

为进行演示先简单的 建两张表

1.用户表 t_user , 用户购买记录表为 t_buy_log (两者是一对多的关系)

2.填充数据查询 t_user表

mysql 左链接 left join  条件写在where 后面与 on后面的区别

  1. 查询 t_bug_log表

mysql 左链接 left join  条件写在where 后面与 on后面的区别

4.一般常用的 当进行 以t_user 表为主 进行左链接查询时 会把 用户所有的 数据查出来 ,右表没有的记录为 字段填空 null;
SELECT t.*, b.id bid, b.product_id , b.status from t_user t LEFT JOIN t_buy_log b on t.id= b.uid;

mysql 左链接 left join  条件写在where 后面与 on后面的区别

5.若想对上面查出后的数据 进行筛选过滤 只需在 where 后加条件便可
注意此时 用户wanger 已被过滤掉了

mysql 左链接 left join  条件写在where 后面与 on后面的区别

6.若想保留 所有t_user表记录 又查询出其是否成功(或其他条件)购买过的记录,只需把条件 写在on 后面 如下

mysql 左链接 left join  条件写在where 后面与 on后面的区别(图6)

总结 条件写在 where 后是对链表查出结果之后 对数据按条件进行过滤, 加在on 后面 on 后跟的连接条件,只对被驱动表有效 对 t_buy_log 表的条件是生效的,t_user 表不生效(如图6) 进行查询过滤 再进行联表。

(但是 若保留所有t_user表记录 用 INNER JOIN 并不好使)

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 4

结论有点问题,on 后跟的连接条件,只对被驱动表有效

t_buy_log 表的条件是生效的,t_user 表不生效

file

1年前 评论
t918412 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!