我的问题是这样的返回客户及其订单,包括未下订单的客户。
我写过这样的代码
SELECT A.custid, A.companyname,
B.orderid, B.orderdate
FROM Sales.Customers as A
JOIN sales.orders as B
ON A.custid=B.custid;
它几乎正常,除了一点之外,它会返回这些行,其中orderid
和orderdate
等于NULL
custid companyname orderid orderdate
------ ------------- ------ ---------
57 Customer WVAXS NULL NULL
此外,我无法理解为什么我的代码无法正常工作。
答案 0 :(得分:4)
使用左连接:
SELECT A.custid, A.companyname,
B.orderid, B.orderdate
FROM Sales.Customers as A
LEFT JOIN sales.orders as B
ON A.custid=B.custid;
左连接包括Customers表中的所有行,只包含orders表中发生匹配的行 - 因此B列的列可以为null。