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';

图1

  查询语句2:

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

图2

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

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

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

标签: 云平台