如何加入,包括带有NULL数据的行

时间:2013-11-20 20:33:38

标签: sql tsql join

我的问题是这样的返回客户及其订单,包括未下订单的客户。

我写过这样的代码

SELECT A.custid, A.companyname, 
       B.orderid, B.orderdate

FROM Sales.Customers as A
  JOIN sales.orders as B
   ON A.custid=B.custid;

它几乎正常,除了一点之外,它会返回这些行,其中orderidorderdate等于NULL

custid     companyname         orderid   orderdate
------     -------------       ------    ---------
57         Customer WVAXS      NULL       NULL

此外,我无法理解为什么我的代码无法正常工作。

1 个答案:

答案 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。