栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL-这些联接之间的区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL-这些联接之间的区别?

好吧,这是操作的顺序。

SELECt    t1.*FROM    table1 t1    INNER JOIN table2 t2        LEFT JOIN table3 t3 ON t3.table3_ID = t2.table2_ID    ON t2.table2_ID = t1.table1_ID

可以改写为:

SELECt    t1.*FROM       table1 t1-- inner join t1    INNER JOIN        (table2 t2 LEFT JOIN table3 t3 ON t3.table3_ID = t2.table2_ID)  -- with this     ON t2.table2_ID = t1.table1_ID    -- on this condition

因此,基本上,首先根据连接条件:t3将t2与t3左连接,然后在table2_ID = table1_ID上与t2对IN1进行t1内连接。

在第二个示例中,首先将INNER JOIN t1与t2组合在一起,然后在条件table2_ID = table1_ID上与表t3进行左联接。

SELECt    t1.*FROM    table1 t1    INNER JOIN table2 t2 ON t2.table2_ID = t1.table1_ID    LEFT JOIN table3 t3 ON t3.table3_ID = t2.table2_ID

可以改写为:

SELECt    t1.*FROM        (table1 t1 INNER JOIN table2 t2 ON t2.table2_ID = t1.table1_ID) -- first inner join    LEFT JOIN    -- then left join        table3 t3 ON t3.table3_ID = t2.table2_ID  -- the result with this

编辑

我道歉。我的第一句话是错误的。这两个查询将产生相同的结果,但是在性能上可能会有所不同,因为在某些情况下(当表1仅包含表2中元素的子集时),第一个查询的执行可能会比第二个查询慢。首先执行-然后才与table1相交。与第二个查询相反,第二个查询允许查询优化器完成其工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号