关于inner join
时间:2011-11-06
来源:互联网
select * from A inner join B on A.id = B.id inner join on B.id = C.id
和select * from (A inner join B on A.id = B.id) inner join on B.id = C.id
这两个SQL有区别么?
可不可以这么理解:关于第一个SQL,A的每个记录去B里面查找有没有相同的ID,然后A,B两个表连接后的表再和C连接
作者: lys0412 发布时间: 2011-11-06
连接是哪个表,要根据连接表达式来看,比如后面有 b.id=c.id,那就是 b 表连到 c 表.
作者: qianjin036a 发布时间: 2011-11-06
加括号不是这样用的,是改变表的执行顺序
如
from a
left join (b inner join c on b.ID=c.ID) on a.aid=c.aid
作者: roy_88 发布时间: 2011-11-06
查看执行计划可以看到是相同
加括号不是这样用的,是改变表的执行顺序
如
from a
left join (b inner join c on b.ID=c.ID) on a.aid=c.aid
加不加括号都不会影响结果,只是会影响表的连接顺序,可能优化的时候有用。对于最终的结果是没有不同的,这样理解对么?
作者: lys0412 发布时间: 2011-11-06
引用 2 楼 roy_88 的回复:
查看执行计划可以看到是相同
加括号不是这样用的,是改变表的执行顺序
如
from a
left join (b inner join c on b.ID=c.ID) on a.aid=c.aid
加不加括号都不会影响结果,只是会影响表的连接顺序,可能优化的时候有用。对于最终的结果是没有不同的,这样理解对么?
括号就是执行顺序.有括号先执行括号里面的.
作者: chirea 发布时间: 2011-11-06
作者: muxingrenlgm 发布时间: 2011-11-06
作者: fredrickhu 发布时间: 2011-11-06
引用 2 楼 roy_88 的回复:
查看执行计划可以看到是相同
加括号不是这样用的,是改变表的执行顺序
如
from a
left join (b inner join c on b.ID=c.ID) on a.aid=c.aid
加不加括号都不会影响结果,只是会影响表的连接顺序,可能优化的时候有用。对于最终的结果是没有不同的,这样理解对么?
加括号是改变表的执行顺序,对多表连接时有用,默认的表顺序连接,最终结果不会影响,当表连接用到 left join /right join时,加了括号影响结果集
作者: roy_88 发布时间: 2011-11-06
作者: houyajin 发布时间: 2011-11-06
三个表A,B,C,有下面两个SQL
select * from A inner join B on A.id = B.id inner join on B.id = C.id
和select * from (A inner join B on A.id = B.id) inner join on B.id = C.id
这两个SQL有区别么?
可不可以这么理解:关于第一个SQL,A的每个记……
从你的写法上来看没有区别.
但是建议把记录最少的表,放在最后,次之第二,最多者放最前面.
例如:c<b<a,那么你的写法是合适的,反之,则不一定合适.
作者: dawugui 发布时间: 2011-11-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28