LEFT JOIN(联表)的条件写在ON中和WHERE的区别

来源:互联网 发布:paparecipe s防伪软件 编辑:程序博客网 时间:2024/05/16 12:20

LEFT JOIN(联表)的条件写在ON中和WHERE的区别

转载自:http://www.cnblogs.com/GuominQiu/articles/1936959.html

写在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'这一条件,所以不会出现在结果集

0 0