自动增加字段,在另一列MYSQL

时间:2016-02-04 09:32:03

标签: mysql sql-order-by partitioning

你能提供一个非常简单的MYSQL示例,说明如何创建一个自动递增的“count”或“order”字段,但是在不同字段的每次更改后重新启动?在下表中,每当“膳食”字段发生变化时,“订单”字段将在“1”处重新启动。感谢。

  

用餐时间

     

午餐10:30 1

     

午餐11:00 2

     

午餐11:15 3

     

晚餐4:30 1

     

晚餐4:45 2

     

晚餐5:00 3

     

晚餐5:30 4

2 个答案:

答案 0 :(得分:0)

自动增量始终是每个表,您无法使其特定于某些列或索引。

如果您想拥有每列自动增量ID,则需要手动执行此操作。即插入新项目时,请通过select MAX(id) FROM ... WHERE name = 'Dinner'选择最大ID,然后插入maximum+1

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

答案 1 :(得分:0)

该功能在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;