SQL 中JOIN ON 的AND条件设置

关于在A LEFT JOIN B ON A.id =B.id 后面跟AND 条件的测试。

 

有如下的结构数据:

注意此LEFT ON 跟AND 限制A表的场景;

dat

a.sql

1.43KB

有如下的表结构

SQL 中JOIN ON 的AND条件设置

 

使用SQL进行查询:

(1)SELECT * FROM `table_name` a

LEFT JOIN table_age b

ON a.id = b.id;

SQL 中JOIN ON 的AND条件设置

 

(2)SELECT * FROM `table_name` a

LEFT JOIN table_age b

ON a.id = b.id

AND a.`name` = "张三";

SQL 中JOIN ON 的AND条件设置

惊喜的结果;理解此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` = "张三";

SQL 中JOIN ON 的AND条件设置

 

(4)SELECT * FROM (SELECT * FROM table_name WHERE`name` = "张三") a

LEFT JOIN table_age b

ON a.id = b.id;

SQL 中JOIN ON 的AND条件设置

 

LEFT ON 跟AND 限制B表的场景:

方式2和方式4 是一样的结果