当我尝试将表A加入B时,我只得到两行 - 我没有得到' 55A'在表B中缺少的ProdID列中。如何确保我为缺少的ProdID获得三行零价格
Query used:
select A.orderNo, B.Price
from A,B
where A.ProdID=B.ProdIDl
答案 0 :(得分:3)
首先,您应该遵循一个简单的规则:永远不要在join
子句中使用逗号。显式join
语法更强大。而且,它已经存在了很长很长时间。
您想要的join
是left join
。无论第二个表中是否存在匹配项,它都会将所有行保留在第一个表中。当没有匹配时,第二个表中的列被赋予NULL
个值。要将NULL
转换为0
,您可以使用ANSI标准函数coalesce()
:
select A.orderNo, coalesce(B.Price, 0) as Price
from A left join
B
on A.ProdID = B.ProdID;
答案 1 :(得分:1)
答案 2 :(得分:1)
SELECT A.*, B.*
FROM A
LEFT JOIN B
ON A.ProdID=B.ProdID
如果表A中的元素在表B中没有匹配,则此查询将显示它们,但在右侧设置NULL
,如下所示:
答案 3 :(得分:0)
您可以加入这些表格( tableA , tableB ):
SELECT A.orderNo, B.Price
FROM tableA A
LEFT JOIN tableB B
ON A.ProdID = B.ProdID
WHERE 1