在另一列更改后重置的自动递增字段 MYSQL

Auto-increment field that resets after a change in another column MYSQL

您能否提供一个非常简单的 MYSQL 示例,说明如何创建一个 "count" 或 "order" 字段,该字段将自动递增,但在每次更改不同字段后重新启动?在下面的 table 中,每当 "Meal" 字段发生变化时,"Order" 字段将从“1”重新开始。谢谢

Meal Time Order

Lunch 10:30 1

Lunch 11:00 2

Lunch 11:15 3

Dinner 4:30 1

Dinner 4:45 2

Dinner 5:00 3

Dinner 5:30 4

自动增量总是根据table,你不能让它特定于某些列或索引。

如果你想要每列自增id,你需要手动完成。 IE。插入新项目时,select id 最大值通过 select MAX(id) FROM ... WHERE name = 'Dinner' 然后插入 maximum+1.

要在某些报告的 Select 语句中执行此操作,您需要通过会话变量和 case 语句来实现它。参见 this tutorial

该功能在 MyISAM 引擎中可用,但在 InnoDB 中不可用。它可以被模拟。请参阅 MyISAM to InnoDB 并搜索 'abc'。这是它的要点:

  BEGIN;
  SELECT @id := IFNULL(MAX(id),0) + 1 FROM foo WHERE other = 123 FOR UPDATE;
  INSERT INTO foo
     (other, id, ...)
     VALUES
     (123, @id, ...);
  COMMIT;