我在 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
提前致谢
答案 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