在嵌套连接查询和单个连接查询中连接三个表之间的区别

时间:2014-02-26 21:06:49

标签: database sql-server-2008 join inner-join

我想知道这两个查询在产生相同结果时有什么区别:

SELECT a.OrderID,
       ProductID,
       a.LastName
FROM   [Order Details],
       (SELECT Employees.EmployeeID,
               OrderID,
               LastName
        FROM   Employees,
               Orders
        WHERE  Employees.EmployeeID = Orders.EmployeeID
               AND LastName = 'Buchanan')a
WHERE  [Order Details].OrderID = a.OrderID 

SELECT Orders.OrderID,
       ProductID,
       LastName
FROM   [Order Details],
       Employees,
       Orders
WHERE  Orders.OrderID = [Order Details].OrderID
       AND Orders.EmployeeID = Employees.EmployeeID
       AND LastName = 'Buchanan' 

第一个是嵌套连接查询,第二个是单个连接查询,但连接相同的三个表并产生相同的结果......

1 个答案:

答案 0 :(得分:0)

联接将表现更好(几乎所有情况下)但子查询更容易理解和编写,尤其是对于SQL较新的人。对于小型数据集,您可能看不到任何差异,但随着您的设置上升,它将变为指数级。

Join vs. sub-query