[经验]LEFT JOIN(联表)的条件写在ON中和WHERE的区别
写在ON中是作为关联的条件之一,而写在WHERE条件中,则是筛选依据之一。
比如:
SELECT * FROM A
LEFT JOIN B ON (A.ID = B.ID AND B.NAME = 'NAME')
这条语句可以将在B表找不到的数据(即A.ID在B表中找不到)都保留下来
这条如果写成:
SELECT * FROM A
LEFT JOIN B ON A.ID = B.ID÷
WHERE B.NAME = 'NAME'
这样的话,B表中找不到的数据就不会出来了。这是因为WHERE语句中取B.NAME,如果A的数据不在B中,那么B.NAME 为NULL,
肯定不符合B.NAME = 'NAME'这一条件,所以不会出现在结果集
参考文档:
[1]http://blogold.chinaunix.net/u/29553/showart_435398.html
浙公网安备 33010602011771号