选择中的左连接子查询

时间:2021-01-13 02:15:18

标签: sql sql-server left-join

我在 www.w3schools.com 中练习 SQL,下面的代码是
错误的结果,因为我想从客户表中加入的客户名称 即使customerid不同,也会生成重复名称。

SELECT orders.OrderDate
      ,orders.OrderID   ,orders.CustomerID 
       , (select customers.CustomerName 
from Orders
Left join Customers
on Orders.CustomerID = Customers.CustomerID) as customername
FROM Orders

提前致谢

enter image description here

2 个答案:

答案 0 :(得分:2)

我认为您根本不需要 left join。没有客户的订单是否存在?如果是,则需要 LEFT JOIN。如果不是,您需要 inner join 如下:

SELECT orders.OrderDate
      ,orders.OrderID   
      ,orders.CustomerID 
      ,customers.CustomerName
 FROM Orders
 Left join Customers on Orders.CustomerID = Customers.CustomerID

答案 1 :(得分:0)

您在两个地方从订单中提取。不需要。简单的 LEFT OUTER JOIN 或简单的子查询都可以。

SELECT orders.OrderDate
      ,orders.OrderID   ,orders.CustomerID 
       , (select customers.CustomerName 
from Customers
where Customers.CustomerID = Orders.CustomerID) as customername
FROM Orders

SELECT orders.OrderDate
      ,orders.OrderID   
      ,orders.CustomerID 
       , customers.CustomerName 
FROM Orders
LEFT OUTER JOIN Customers 
ON Customers.CustomerID = Orders.CustomerID
相关问题