我有这样的表列:id (int auto inc primary), title (varchar), batch (int)
每个批次有3个项目。但是在这种情况下,批处理不是按顺序进行的
这里是示例数据:
1、5
2,b,5
3,c,5
4,d,7
5、7
6,f,7
7,g,10
8,h,10
是否有任何查询来更新那些批次变得像自动增量? (按批次订购)因此,批次5变为1,批次7变为2,批次10变为3,依此类推。
TL; DR:我想按批次而不是按行更新序列
谢谢你的帮助。
最佳答案
您可以这样做:
UPDATE t
JOIN (
SELECT
t.*,
@newbatch := IF (@rc % 3 = 0, @newbatch + 1, @newbatch) AS newbatch,
@rc := @rc + 1
FROM t
, (SELECT @rc := 0, @newbatch := 0) var_init_subquery
) sq ON t.id = sq.id
SET t.batch = newbatch;
看到它在sqlfiddle中实时运行
如果您对此有疑问,请先阅读manual entry about user defined variables。
关于mysql - MySQL每批更改数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39344462/