Mysql 如何为每组用户实现序列号数据库?

Mysql 如何为每组用户实现序列号数据库?,mysql,Mysql,很容易创建一个数据库表来存储序列数字;但这种设计适用于所有用户共享序列的事件。我想要的是为每个用户组创建序列:这个组可以随时增长,因为它是一个数据库表,管理员可以随时创建一个组,并将用户分配到特定组。那么,如何根据组实现序列生成呢?如果您使用的是myisam 以下内容摘自上述链接。 对于MyISAM和BDB表,可以在 多列索引中的第二列。在这种情况下 自动增量列的生成值计算为 最大值(自动增量列)+1,其中前缀=给定前缀。这是 当您想要将数据放入有序的组中时非常有用 对于您的情况: CREAT

很容易创建一个数据库表来存储
序列
数字;但这种设计适用于所有用户共享
序列
的事件。我想要的是为每个用户组创建
序列
:这个
可以随时增长,因为它是一个数据库表,管理员可以随时创建一个组,并将用户分配到特定组。那么,如何根据组实现
序列
生成呢?

如果您使用的是myisam

以下内容摘自上述链接。

对于MyISAM和BDB表,可以在 多列索引中的第二列。在这种情况下 自动增量列的生成值计算为 最大值(自动增量列)+1,其中前缀=给定前缀。这是 当您想要将数据放入有序的组中时非常有用

对于您的情况:

CREATE TABLE mytable (
   user_id MEDIUMINT NOT NULL AUTO_INCREMENT,
    group_id MEDIUMINT NOT NULL,   
     user_name CHAR(30) NOT NULL,
    PRIMARY KEY (group_id,user_id)
     ) ENGINE=MyISAM;


INSERT INTO mytable (group_id, user_name) VALUES
     (1,'alex'),(1,'jenny'),(2,'baz'),(1,'tim'),(2,'danny'),(3,'joe');


SELECT * FROM mytable ORDER BY group_id,user_id;
返回:

user_id group_id    user_name
1            1          alex
2            1          jenny
3            1          tim
1            2          baz
2            2          danny
1            3          joe

如果您正在使用myisam

以下内容摘自上述链接。

对于MyISAM和BDB表,可以在 多列索引中的第二列。在这种情况下 自动增量列的生成值计算为 最大值(自动增量列)+1,其中前缀=给定前缀。这是 当您想要将数据放入有序的组中时非常有用

对于您的情况:

CREATE TABLE mytable (
   user_id MEDIUMINT NOT NULL AUTO_INCREMENT,
    group_id MEDIUMINT NOT NULL,   
     user_name CHAR(30) NOT NULL,
    PRIMARY KEY (group_id,user_id)
     ) ENGINE=MyISAM;


INSERT INTO mytable (group_id, user_name) VALUES
     (1,'alex'),(1,'jenny'),(2,'baz'),(1,'tim'),(2,'danny'),(3,'joe');


SELECT * FROM mytable ORDER BY group_id,user_id;
返回:

user_id group_id    user_name
1            1          alex
2            1          jenny
3            1          tim
1            2          baz
2            2          danny
1            3          joe

没有必要是中等的。没有必要是中等的。