MySQL 每批更改数量

标签 mysql sql-update

我有一个带有这样列的表: id(int auto inc Primary),标题(varchar),批处理(int) 其特点是每批有3个项目。但在这种情况下,批处理不按顺序排列

这里是示例数据:

  • 1,a,5
  • 2,b,5
  • 3,c,5
  • 4,d,7
  • 5,e,7
  • 6,f,7
  • 7,克,10
  • 8,小时,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;

如果您对其工作原理有疑问,请阅读本文 manual entry about user defined variables首先。

关于MySQL 每批更改数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344462/

相关文章:

mysql - 如何更新具有彼此串联的多行的列

java - 使用外键关联的一对一映射 hibernate

php - MySQL:选择今天有 session 的所有电影

mysql - 我需要在具有次要条件的 SQL 表中查找/替换值

Mysql 程序。更新并选择

mysql条件字段更新

sql - 根据其他表中的列更新表列

php - 第二个 mysqli_query 不起作用

mysql - mysql 语句中的 ORDER BY CASE

mysql - 如何编写一个接一个地更新两个表的触发器