gpt4 book ai didi

MYSQL 更新具有连续数值 IF NULL 的列 - 连续序列

转载 作者:行者123 更新时间:2023-11-29 16:34:01 25 4
gpt4 key购买 nike

我正在尝试保留表的运行序列号。我将每天晚上按计划运行查询来更新表并根据最后一个数字 +1 填充顺序号并继续。

我的表:mis_order_charges

ID    item_id    SEQ
1 20 1
5 15 2
6 21 3
9 20 NULL
12 21 NULL

所以我想运行一个更新查询来用 4 和 5 填充 NULL,当然每次运行都要继续。

我尝试了一些方法:

insert into misc_order_charges (seq)
SELECT @row := @row + 1 as row
FROM misc_order_charges moc, (SELECT @row := 0) r where seq is null;

无效

UPDATE misc_order_charges
JOIN (SELECT @rank := 0) r
SET seq=@rank:=@rank+1 where misc_order_charges.seq is null;

上面的方法有效,但当然会重置计数,因此 NULL 得到 1 和 2

非常感谢任何帮助!

最佳答案

您可以使用 MAX() 函数获取最大值作为排名变量的基础。

UPDATE misc_order_charges
JOIN (SELECT @rank := (SELECT MAX(T.SEQ) FROM misc_order_charges as T)) r
SET seq=@rank:=@rank+1 where misc_order_charges.seq is null;

这将获得第一排名,因为表中的任何最高 SEQ 编号都是如此。

关于MYSQL 更新具有连续数值 IF NULL 的列 - 连续序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728133/

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