gpt4 book ai didi

mysql - 在 MySQL 中的 UPDATE 查询期间将值设置为参数

转载 作者:行者123 更新时间:2023-11-30 00:01:49 26 4
gpt4 key购买 nike

在MySQL中有一个表包括ID、DAT、AMN、FLWC、FLWD、TYP。我想按 DAT 和 ID 对表进行排序(DAT 是排序中的第一个关键字),然后根据 TYP 从先前记录更新 FLWC 和 FLWD。例如,如果 0:上一条记录和 1:当前记录,则:

if typ1==d then (flwc1=flwc0 AND flwd1=flwd0+amn1)
if typ1==c then (flwc1=flwc0+amn AND flwd1=flwd0)

您可以看到 flwc 和 flwd 将被设置为下一条记录,其中一个将根据 TYP 值与 AMN 相加。

更改前的表格:

-- id__dat__amn__flwc__flwd__typ
-- 1 10 100 0 0 d
-- 2 11 200 0 0 c
-- 3 12 300 0 0 d
-- 4 13 400 0 0 c
-- 5 14 500 0 0 d
-- 6 15 600 0 0 c
-- 7 16 700 0 0 d

更新后的表:

-- id__dat__amn__flwc__flwd__typ
-- 1 10 100 0 100 d
-- 2 11 200 200 100 c
-- 3 12 300 200 400 d
-- 4 13 400 600 400 c
-- 5 14 500 600 900 d
-- 6 15 600 1200 900 c
-- 7 16 700 1200 1600 d

我在 MS SQL Server 中做到了这一点,但 MySQL 在这种情况下似乎很差(在更新查询期间将值设置为参数),MS SQL Server 中的解决方案:

declare @sumc decimal
declare @sumd decimal
set @sumc=0
set @sumd=0

update myTable set
@sumc+= case typ when 'c' then amn else 0 end, flwc=@sumc,
@sumd+= case typ when 'd' then amn else 0 end, flwd=@sumd

我需要在 MySQL 中执行上述查询。谢谢

最佳答案

可以用MySQL来完成。

一个可能有用的例子。

表格:

CREATE TABLE `test` (
`Id` INT(11) NOT NULL AUTO_INCREMENT,
`Incrementar` INT(11) NOT NULL,
PRIMARY KEY (`Id`)
);

插入测试记录:

INSERT INTO `test` (`Incrementar`) VALUES (0);
INSERT INTO `test` (`Incrementar`) VALUES (0);
INSERT INTO `test` (`Incrementar`) VALUES (0);
INSERT INTO `test` (`Incrementar`) VALUES (0);

更新:

SET @tempVariable = 1;

UPDATE test SET Incrementar = (@tempVariable:=@tempVariable+1)

结果:

Id  Incrementar
1 2
2 3
3 4
4 5

关于mysql - 在 MySQL 中的 UPDATE 查询期间将值设置为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964234/

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