-- 使用ON子句条件
SELECT *
FROM A
LEFT JOIN B ON A.key = B.key AND B.condition;
-- 使用WHERE子句条件
SELECT *
FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.condition;
在第一个查询中,即使B.condition不成立,A表的所有记录仍然会返回,B表的相关列会显示为NULL。而在第二个查询中,只有当B.condition成立时,A表和B表的匹配记录才会返回。如果B.condition不成立,即使A表有记录,也不会出现在结果集中。
因此,如果你希望无论B表的条件是否满足,都要返回A表的所有记录,应该将条件放在ON子句中。如果你希望根据B表的条件过滤结果集,那么应该使用WHERE子句。这是一个重要的区别,因为它会影响查询结果的内容123。