概述
引言:今天一同学问我,join后面跟where查询条件,查询的时候是先关联再筛选的还是先各自筛选了再关联的?开始也就凭感觉,应该是先关联再筛选吧!他问了问为什么呢?后来我也越想越纠结了,于是找了两个表试了试,终于得出结论...
看sql:
A表:
id name
1 aa
2 bb
B表:
id name
1 cc
sql1: select A.*,B.* from A left join B on A.id=B.id where B.id<>1
这时结果集是空的
结果:
id name id name
sql2: select A.*,B.* from A left join (select * from B where B.id<>1 ) on A.id=B.id
这时A的会全显示 B为空 结果:
id name id name
1 aa
2 bb
从上面的sql可以看出,如果是先筛选再关联的话,那么sql1和sql2的结果集就应该是一样的,但事实并非如此,所以join后面跟where,是先关联再筛选,where是对整个结果集的一个筛选。
最后
以上就是干净刺猬为你收集整理的join 和 where的执行顺序的全部内容,希望文章能够帮你解决join 和 where的执行顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复