SQL 中JOIN ON 的AND条件设置
关于在A LEFT JOIN B ON A.id =B.id 后面跟AND 条件的测试。
有如下的结构数据:
注意此LEFT ON 跟AND 限制A表的场景;
dat
a.sql
1.43KB
有如下的表结构
使用SQL进行查询:
(1)SELECT * FROM `table_name` a
LEFT JOIN table_age b
ON a.id = b.id;
(2)SELECT * FROM `table_name` a
LEFT JOIN table_age b
ON a.id = b.id
AND a.`name` = "张三";
惊喜的结果;理解此SQL的解析过程:帮助理解的执行模式:左右表互换位置执行
不管on上的and条件是否为真都会返回left或right表中的记录
SELECT * FROM table_age b
LEFT JOIN `table_name` a
ON a.id = b.id
AND a.`name` = "张三";
如果必须对左表限制条件,推荐如下两种写法:(效率取决于左边表数据大小)
(3)SELECT * FROM `table_name` a
LEFT JOIN table_age b
ON a.id = b.id
WHERE a.`name` = "张三";
(4)SELECT * FROM (SELECT * FROM table_name WHERE`name` = "张三") a
LEFT JOIN table_age b
ON a.id = b.id;
LEFT ON 跟AND 限制B表的场景:
方式2和方式4 是一样的结果