SQL更新空表值

时间:2011-10-13 17:03:50

标签: sql null

我正在使用两个表,表一是part_order看起来像

ONum    PNum    NumOrdered  QuotPrice
2236    BZ66    1   
2236    AZ52    10          29.90
2237    CA14    3   
2240    CB03    1   

和表二是部分,看起来像

PNum    Description OnHand  Warehouse   UnitPrice
AZ52    Skates          20  2           36.95
BZ66    Washer          5   1           465.50
CA14    Skillet         13  1           28.99
CB03    Bike            44  3           195.50

我正在尝试使用unitprice值更新我的quotprice列,如果它为null。这意味着29.90应该保留,但其他人应该更新。

我输入:

 update part_order
    set quotprice = (select part.unitprice
    from part
    where part.pnum = part_order.pnum
    and quotprice is null);

除此之外,它可以切换值。我的29.90变为null,其他3个值更新。如果我再次输入,其他3个值将返回null,第二个值将填充36.95。我想知道为什么它改变了值而不是只检查空值。

2 个答案:

答案 0 :(得分:3)

UPDATE po
SET po.QuotPrice = p.UnitPrice
FROM part_order AS po
INNER JOIN part AS p ON po.pnum = p.pnum
WHERE po.QuotPrice IS NULL

答案 1 :(得分:2)

 update part_order
   set quotprice = (select part.unitprice
                    from part
                    where part.pnum = part_order.pnum)
   WHERE quotprice IS NULL;