gpt4 book ai didi

mysql - 条件 SQL 左连接

转载 作者:行者123 更新时间:2023-11-29 06:33:22 25 4
gpt4 key购买 nike

我有两张 table ,我想将它们加入到预期的结果中。

Table 1:ItemUOMItemcode     UOM        RateItem00123    Pkt454g    454Item00123    Pkt252g    252 Item00123    GM         1
Table 2:  vItemBalQty Itemcode     UOM        BalQty    LocationItem00123    PKT454g    200       2001Item00123    PKT252g    150       2001
Expected Result:Itemcode     UOM        BalQty   LocationItem00123    PKT454g    200      2001Item00123    PKT252g    150      2001Item00123    GM         0        2001

But my actual result with my query is not same with expected one.

select a.ItemCode,a.uom,coalesce(b.BalQty,0.00) from itemuom a
left join vItemBalQty b on b.ItemCode = a.ItemCode and a.uom = b. uom
where a.itemcode = 'Item00123' and b.location ='2001'
Actual Result:Itemcode     UOM        BalQty   LocationItem00123    PKT454g    200      2001Item00123    PKT252g    150      2001

最佳答案

您需要将 b.location = '2001' 条件从 WHERE 子句移至 JOIN 条件,否则会变成这样进入 INNER JOIN (请参阅 manual 中有关 WHERE 条件的段落),即

select a.ItemCode,a.uom,coalesce(b.BalQty,0.00)
from itemuom a
left join vItemBalQty b on b.ItemCode = a.ItemCode and a.uom = b. uom and b.location ='2001'
where a.itemcode = 'Item00123'

正如 @ysth 所说,将 b.location = '2001' 条件添加到 WHERE 子句意味着 b.location 可以不是 NULL,否则对于不匹配的行,它会是 NULL,从而从结果中排除这些行。通过将条件添加到 LEFT JOIN,我们返回具有 b.location = '2001 的行,但仍返回不满足该条件的空 b 行。

关于mysql - 条件 SQL 左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55174907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com