我的表格有这样的列:
id (int auto inc primary), title (varchar), batch (int)
其特点是每批3件。但在这种情况下,批次不是按顺序
这里有样本数据:
是否有任何查询更新这些批次变得像自动增量? (按批次排序)因此批次5变为1,批次7变为2,批次10变为3,依此类推。
TL; DR:我想更新每批次的序列,而不是每行更新
感谢您的帮助。
答案 0 :(得分:1)
你可以这样做:
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;
如果您对此工作原理有疑问,请先阅读manual entry about user defined variables。