MySQL每批更改数字

时间:2016-09-06 08:43:06

标签: mysql sql-update

我的表格有这样的列: id (int auto inc primary), title (varchar), batch (int) 其特点是每批3件。但在这种情况下,批次不是按顺序

这里有样本数据:

  • 1,A,5
  • 2,B,5
  • 3,C,5
  • 4,d,7
  • 5,E,图7
  • 6,F,7
  • 7,克,10
  • 8,H,10

是否有任何查询更新这些批次变得像自动增量? (按批次排序)因此批次5变为1,批次7变为2,批次10变为3,依此类推。

TL; DR:我想更新每批次的序列,而不是每行更新

感谢您的帮助。

1 个答案:

答案 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