内部联合的交换

时间:2014-04-13 07:58:02

标签: sql

我从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. 是否有最佳做法建议或偏好一种方法而不是另一种方法?我的意思是,我应该使用哪种方法?

1 个答案:

答案 0 :(得分:3)

如果他们没有产生相同的结果,那将是非常奇怪的。你有没有期待与众不同?

最佳做法是从您选择大多数列的表开始。

使用LEFTRIGHT JOINS时,您必须担心订单。