1. select * from a left join b on a.id = b.id and a.dt=20181115;

2. select * from a left join b on a.id = b.id and b.dt=20181115;

3. select * from a join b on a.id = b.id and a.dt=20181115;

4. select * from a left join b on a.id = b.id  where a.dt=20181115;

sql1: 如果是left join 在on上写主表a的条件不会生效,全表扫描。
sql2: 如果是left join 在on上写副表b的条件会生效,但是语义与写到where 条件不同
sql3: 如果是inner join 在on上写主表a、副表b的条件都会生效
sql4: 建议这么写,大家写sql大部分的语义都是先过滤数据然后再join ,所以在不了解 join on + 条件的情况下,条件尽量别写道on 后,直接写到where后就ok了;如果where条件后写b表的过滤条件,就变成了先left join出结果再按照b条件过滤数据。

相关文章:

  • 2021-12-16
  • 2021-07-20
  • 2022-12-23
  • 2021-09-22
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2022-12-23
  • 2022-02-12
相关资源
相似解决方案