【问题标题】:Commutativity of Inner Join内连接的交换性
【发布时间】:2014-04-13 07:58:02
【问题描述】:

我从this answer (click)读到以下条件语句

Invoices.CustomerID=Customers.CustomerID

Customers.CustomerID=Invoices.CustomerID

是相同的,因为它产生相同的结果集。

现在,我的问题是关于内连接的交换性。我尝试了以下两种方法,它们产生了相同的结果集(列顺序除外)。

Customers 表优先

use MMABooks
select *
from Customers
    inner join Invoices
on Invoices.CustomerID=Customers.CustomerID
where Customers.CustomerID=10

Invoices 表优先

use MMABooks
select *
from Invoices
    inner join Customers
on Invoices.CustomerID=Customers.CustomerID
where Invoices.CustomerID=10

问题

  1. 内部连接是否设计为可交换的?
  2. 是否有最佳实践建议或偏爱一种方法而不是另一种方法?我的意思是,我应该使用哪种方法?

【问题讨论】:

    标签: sql


    【解决方案1】:

    如果他们没有产生相同的结果,那就太奇怪了。您是否期望有所不同?

    最佳做法是从您从中选择大部分列的表开始。

    当您使用LEFTRIGHT JOINS 时,您确实需要担心顺序。

    【讨论】:

      猜你喜欢
      • 2015-01-05
      • 2010-10-14
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 2013-08-17
      相关资源
      最近更新 更多