您能否提供一个非常简单的MYSQL示例,说明如何创建一个"计数"或"顺序"字段,该字段将自动递增,但在每次更改后重新启动不同字段?在下表中,每次"餐食"字段发生变化时,"订单"字段都会从"1"重新开始。谢谢。
用餐时间订单
午餐 10:30 1
午餐 11:00 2
午餐 11:15 3
晚餐 4:30 1
晚餐 4:45 2
晚餐 5:00 3
晚餐 5:30 4
自动增量始终是按表进行的,不能使其特定于某些列或索引。
如果要具有每列自动递增 id,则需要手动执行此操作。 即在插入新项目时,通过select MAX(id) FROM ... WHERE name = 'Dinner'
选择最大 id,然后插入maximum+1
。
要在某些报表的 Select 语句中执行此操作,您需要通过会话变量和 case 语句实现它。 请参阅本教程。
该功能在MyISAM引擎中可用,但在InnoDB中不可用。 它可以被模拟。 请参阅MyISAM到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;