连续序列

zzwlnbp8  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(399)

我正在尝试为表保留一个正在运行的序列号。我将按计划每晚运行查询以更新表,并根据最后一个数字+1填充序列号,然后继续。
我的table:乱序乱收费

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

所以我想运行一个update查询,用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;

上面的工作,但当然重置计数,所以空值得到1和2
非常感谢您的帮助!

vecaoik1

vecaoik11#

可以使用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;

这将得到第一个排名,因为任何最高的序号是在您的表中。

相关问题