一尘不染

按组自动递增

mysql

使用MySQL(特别是5.0)有没有办法让auto_increment字段的值基于分组列?

例:

id  name   group_field
1   test   1
2   test2  1
1   test3  2
2   test4  2
1   test5  3
2   test6  3

我不想通过任何“疯狂”的方法来达到这个目的,但是如果需要的话。


阅读 191

收藏
2020-05-17

共1个答案

一尘不染

对于MyISAM和BDB表,您可以将auto_increment字段作为键的次要部分,例如

CREATE TABLE foo (
   id          INT AUTO_INCREMENT NOT NULL,
   group_field INT NOT NULL,
   name        VARCHAR(128),

   PRIMARY KEY(group_field, id)
);

这是手册对此所说的

在这种情况下,将为AUTO_INCREMENT列生成的值计算为MAX(auto_increment_column)+ 1 WHERE prefix =
given-prefix。当您要将数据放入有序组中时,这很有用。

2020-05-17