我正在尝试为表保留一个正在运行的序列号。我将按计划每晚运行查询以更新表,并根据最后一个数字+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
非常感谢您的帮助!
1条答案
按热度按时间vecaoik11#
可以使用max()函数获取最大值,以用作秩变量的基。
即
这将得到第一个排名,因为任何最高的序号是在您的表中。