第一种写法:
SELECt * FROM A INNER JOIN B ON A.ID = B.aID WHERe B.typeID = 0
第二种写法:
SELECt * FROM A INNER JOIN (
SELECt * FROM B WHERe typeID = 0
) b ON A.ID = b.aID
包括执行效率,以及如何应用,越详细越好
SQL 多表联接查询 这两种写法有什么区别
答案:4 悬赏:10 手机版
解决时间 2021-03-16 13:34
- 提问者网友:捧腹剧
- 2021-03-16 10:46
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-03-16 12:17
执行结果是一样的, 第一种按条件匹配两个表检索数据,这是最常用的写法,第二种单从上面的语句来看,有点画蛇添足的感觉, 先将SELECt * FROM B WHERe typeID = 0 视为一个集合(可以认为是临时表),然后在去关联A 表 , 感觉执行效率第一种应该更好
全部回答
- 1楼网友:行路难
- 2021-03-16 13:42
第一种是连接查询,第二种是嵌套查询吧
再看看别人怎么说的。
- 2楼网友:琴狂剑也妄
- 2021-03-16 13:32
这两个语句执行结果相同,执行计划效率也一样
都是先执行where语句筛选B表资料,再执行inner join
- 3楼网友:神也偏爱
- 2021-03-16 12:50
第一种写法是A表与B表的联合形成有匹配的新表(匹配项是A.ID = B.aID),条件是B.typeID = 0,
第二种写法是B表先产生有条件的新表b,条件是 typeID = 0,之后是表A形成有匹配的新表(匹配项是A.ID = b.aID),
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯