如:
select * from table_1 left join table_2 on table_1.id = table_2.t1_id and table_2.status > 0
select * from table_1 left join table_2 on table_1.id = table_2.t1_id where table_2.status > 0
发现两个查询存在差异。
为什么会存在差异,这和on与where查询顺序有关。
(1):ON后面的筛选条件主要是针对的是关联表【而对于主表筛选条件不适用】。
(2):对于主表的筛选条件应放在where后面,不应该放在ON后面
(3):对于关联表我们要区分对待。如果是要条件查询后才连接应该把查询件
放置于ON后。
如果是想再连接完毕后才筛选就应把条件放置于where后面
(4): 对于关联表我们其实可以先做子查询再做join
时间: 2024-11-06 11:19:02