2017-05-08 113 views
0

这里我有两个表Customer和Order。这两个表的模式,是 订单= {订单ID,客户ID,价钱} 客户= {客户ID,姓名,地址}加入之间的区别

现在,如果我跑

SELECT Orders.OrderID, Customers.Name 
FROM Orders 
INNER JOIN Customers 
    ON Orders.CustomerID=Customers.CustomerID;` 

Select Orders.OrderID, Customers.Name 
from Orders,Customers 
where Orders.CustomerID = Customers.CustomerID` 

都产生相同的结果。那么以不同的方式写作有什么不同。我很困惑。第二个查询是否将使用内部联接进行调用?

+1

第二种语法就是所谓的隐式连接。您通常希望避免使用它并支持第一种语法。 http://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins – CSharper

+0

第二个是最古老和过时的句法 –

+0

这是标准的差异,第一个是符合ANSI 92,另一个是1992年之前的标准两者都是完全有效的;尽管INNER JOIN语法更现代。大多数当前的基于成本的优化器将在执行方面对待它们。随着复杂性的增加,会有轻微的差异。 – xQbert

回答

0

以下是表达INNER JOIN的现代标准方式。这是推荐的方式。始终使用显式的JOIN语法。

select Orders.OrderID, 
    Customers.name 
from Orders 
inner join Customers on Orders.CustomerID = Customers.CustomerID 

虽然这是一个旧的逗号连接。 请勿使用此

select Orders.OrderID, 
    Customers.name 
from Orders, 
    Customers 
where Orders.CustomerID = Customers.CustomerID 
+0

我认为你应该更好地投票结束这个问题重复。 – trincot