当前位置:  开发笔记 > 后端 > 正文

所有这些SQL连接在逻辑上是否相同?

如何解决《所有这些SQL连接在逻辑上是否相同?》经验,为你挑选了1个好方法。

我只是想知道以下所有连接是否在逻辑上等效,如果没有,为什么不呢?

SELECT t1.x, t2.y from t1, t2 where t1.a=t2.a and t1.b=t2.b and t1.c = t2.c;

SELECT t1.x, t2.y from t1 join t2 on t1.a=t2.a where t1.b=t2.b and t1.c = t2.c;

SELECT t1.x, t2.y from t1 join t2 on t1.a=t2.a and t1.b=t2.b where t1.c = t2.c;

SELECT t1.x, t2.y from t1 join t2 on t1.a=t2.a and t1.b=t2.b and t1.c = t2.c;

我想我真正的问题是:将"where"与"on"结合起来做一些不同于仅仅具有多个条件的东西与"on"结合在一起?

我与MySQL合作,以防万一.



1> Tony Andrews..:

它们在逻辑上是等价的,应该产生相同的结果.但是,最后一个是首选的,因为它更准确地说明了查询的语义 - 即"连接表t1和t2".

WHERE子句应该用于"过滤"连接的结果 - 例如

... WHERE t2.some_col > 10

另外,正如康斯坦丁在另一个答案中所说,如果连接是一个OUTER连接,则4个查询会有所不同.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有