我有这样的表列:
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/

10-13 06:12