我想知道是否有可能使用来自其他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
任何解决方案或在一列中都不可能?
答案 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