【问题标题】:does n-way equi join follow associative law?n-way equi join 是否遵循结合律?
【发布时间】:2017-05-08 00:40:17
【问题描述】:

如果有 3 个表并且我希望将它们全部等值加入。
示例语句 1:(Table_1 EQUIJOIN Table_2) EQUIJOIN Table_3
示例语句 2:(Table_2 EQUIJOIN Table_3) EQUIJOIN Table_1
当这些语句分别执行时,两个语句的输出是否相同?

【问题讨论】:

  • 等值连接是什么意思?有些人只考虑内部连接,其他人考虑任何连接,只要它只使用相等检查。答案取决于您使用的含义。

标签: sql join


【解决方案1】:

是的。 Equijoins 是关联的和可交换的等等。表的顺序无关紧要。每个表中条件的顺序没有。

您可以将其可视化,因为等值连接是所有表的笛卡尔积的子集。然后连接会对其进行过滤,过滤器的顺序无关紧要 - 如果一行不在任何过滤器中,则过滤器的顺序无关紧要。

【讨论】:

  • 更一般地说,我认为所有内部连接都是关联的。
【解决方案2】:

Equi Join 只是INNER JOIN 的一个特例,其中所有比较都是相等的。由于INNER JOIN 是关联和交换的,Equi Join 也必须是。请参阅Does the join order matter in SQL?Proof that Inner Join is Commutative

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2019-03-25
    • 2016-07-14
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多