在一列中更新三个元素的组合

时间:2014-06-03 09:16:51

标签: mysql sql

我想知道是否有可能使用来自其他3的信息在一列中进行更新。就像我有一些更详细的杂货数据库 - 表(订单),我希望创建一个新列 - SUM。我还有一个产品的价格和产品分为两类 - 数量公斤和数量的piecies。当我像这样制作更新时:

UPDATE Order
SET Sum=Storage.Price*Order.Q_piece
FROM Storage, Order
WHERE Storage.ProductID=Order.ProductID

此更新适用于所有数量产品,并将NULL值设置为kg产品,如果我为Q_kg products设置了更新,Q_piece产品会自动设置为NULL而这样的事情并不完全奏效。

UPDATE Order
SET Sum=Storage.Price*Order.Q_piece AND/OR Sum=Storage.Price*Order.Q_kg
FROM Storage, Order
WHERE Storage.ProductID=Order.ProductID

任何解决方案或在一列中都不可能?

2 个答案:

答案 0 :(得分:0)

UPDATE Order
SET sum= sum(S.Price*O.Q_piece) + sum (S.Price*O.Q_kg)
FROM Storage S 
inner join Order O
on S.ProductID=O.ProductID

答案 1 :(得分:0)

您应该在where子句中添加其他条件。

UPDATE Order
SET Sum=Storage.Price*Order.Q_piece
FROM Storage, Order
WHERE Storage.ProductID=Order.ProductID
    AND Order.Q_piece is not null

Q_kg产品的相同声明。

只要你使用NULL值,我认为这是正确的,每次计算都会返回NULL。

更新: Mysql支持case语句,所以下面的内容也应该这样做:

UPDATE Order
SET Sum=Storage.Price*CASE WHEN Order.Q_piece is not null THEN Order.Q_piece ELSE Order.Q_kg END
FROM Storage, Order
WHERE Storage.ProductID=Order.ProductID