我有一张桌子:
CREATE TABLE ProductPrice
(
ProductId INT NOT NULL,
EffectiveDt DATE NOT NULL,
InactiveDt DATE NOT NULL,
Price DECIMAL(10,2) NOT NULL
)
我想要做的是使用更新,以便将具有最低有效值的记录的inactivedt更改为有效值 - 记录的1,每个产品ID的下一个最低有效值。
所以说我们有:
21/07/2012 26/07/2012
24/07/2012 28/07/2012
27/07/2012 30/07/2012
这将改为:
21/07/2012 23/07/2012
24/07/2012 26/07/2012
27/07/2012 30/07/2012
到目前为止,我有:
UPDATE pp
SET pp.InactiveDt = (SELECT pe.EffectiveDt
FROM ProductPrice pe
WHERE pe.ProductId = pp.ProductId
)
FROM ProductPrice pp;
但这并不是我真正需要的。
答案 0 :(得分:0)
我不认为你可以在一个大的更新查询中做到这一点,即使你可以,它也会是一堆代码。
正确的方法是使用MySQL存储过程,允许您使用for和while循环编写脚本,并且可以随时通过简单的选择对其进行调用。
http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html