gpt4 book ai didi

sql - 所有这些 SQL 连接在逻辑上都是等价的吗?

转载 作者:行者123 更新时间:2023-12-04 17:29:15 26 4
gpt4 key购买 nike

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

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,以防万一。

最佳答案

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

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

... WHERE t2.some_col > 10

此外,正如康斯坦丁在另一个答案中所说的那样,如果连接是外部连接,则 4 个查询会有所不同。

关于sql - 所有这些 SQL 连接在逻辑上都是等价的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com