四时宝库

程序员的知识宝库

sql中left join on 多个条件需要特殊注意之处

查询语句1:

mysql> select * from tab_user u left join tab_order o on u.name=o.name and u.name='lisi';

查询语句2:

mysql> select * from tab_user u left join tab_order o on u.name=o.name where u.name='lisi';

图1和图2结果的差别原因是在使用left join时,on和where条件的区别造成的:

1、 on中的条件不管是否为真,都会返回左边表中的记录,所以总记录数始终跟左表记录数保持一致。

2、where条件是在临时表生成好后再过滤的,所以总记录数是随着where条件而变化的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接