首页 > 解决方案 > 每种用户类型的起始编号不同

问题描述

我正在为具有多个用户类型的网站构建数据库。

我希望每种类型的用户 ID 以特定数字开头,然后在新用户注册时自动递增

例如

我怎样才能在 MySQL 中做到这一点?

标签: phpmysqlsql

解决方案


您可以使用窗口函数:

select
    u.*,
    row_number() over(partition by user_type order by id) + case user_type
        when 'Admin'   then 0
        when 'Student' then 99
        when 'Teacher' then 1999
    end as new_id
from users

这假定该列id是表的主键。我不建议存储这些信息,这些信息可以如上所示动态计算。如果您要定期使用它,您可以创建一个视图。


推荐阅读