Hive/Sqlsql语句相关MySQL

left join时候 应该用on还是where

2019-07-01  本文已影响237人  良人与我

同事问 left join 时候的条件应该放到 on 后面还是 where 后面
其实这两个的执行结果是不一样的。
来个例子证明下。
建表语句和数据

create table a(f1 int, f2 int, index(f1))engine=innodb;
create table b(f1 int, f2 int)engine=innodb;
insert into a values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
insert into b values(3,3),(4,4),(5,5),(6,6),(7,7),(8,8);

执行 查询语句 1

select * from a left join b on (a.f1=b.f1) and (a.f1=4);
结果如下:


执行 查询语句 2

select * from a left join b on(a.f1=b.f1) where a.f1=4;
结果如下:


image.png

很明显这两个语句的结果是不一样的。
on 只是拼接的条件,以主表为准 不满足条件就是null
where是最后的过滤条件

上一篇下一篇

猜你喜欢

热点阅读