left join on 多条件and where区别

t1表

t2表

要求查询出trade_id和p_id同时相等时的信息,包括user_id、qty。分别用left join on and 和left join on where。结果不一样。

left join on and 两个条件,查询的结果是t1表的全部记录,不满足t.p_id = f.p_id的,用null显示。

left join on where 两个条件,查询的结果是t1表的全部记录,但会根据t.p_id = f.p_id进行筛选过滤。

on-and

SELECT
	t.*, f.*
FROM
	`t1` t
LEFT JOIN t2 f ON t.trade_id = f.trade_id
AND t.p_id = f.p_id;

结果

on-where

SELECT
	t.*, f.*
FROM
	`t1` t
LEFT JOIN t2 f ON t.trade_id = f.trade_id
where t.p_id = f.p_id;

结果

猜你喜欢

转载自blog.csdn.net/weixin_40283570/article/details/83652642