php - 每种用户类型的起始编号不同
问题描述
我正在为具有多个用户类型的网站构建数据库。
- 行政
- 学生
- 老师
我希望每种类型的用户 ID 以特定数字开头,然后在新用户注册时自动递增
例如
- 第一个管理员 ID 应该是 01
- 第十届学生证110
- 第100位老师2100
我怎样才能在 MySQL 中做到这一点?
解决方案
您可以使用窗口函数:
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
是表的主键。我不建议存储这些信息,这些信息可以如上所示动态计算。如果您要定期使用它,您可以创建一个视图。
推荐阅读
- python - Django - 为锦标赛创建模型
- c - 用c语言计算输入数字的总和
- flutter - 基于系统明暗模式的动态主题变化
- php - 当相关表一无所获时,Eloquent 使查询返回 null
- flutter - 如何让横向在颤动中只旋转一个选定的页面
- python - 在 txt 文件中打印二维数组仅保存最后一行 - .join 的使用不正确?
- azure - Azure.Cosmos 还是 Microsoft.Azure.Cosmos、Azure.Storage.Blob 还是 Microsoft.Azure.Storage.Blob?适用于 .NET Core 3.1
- html - 我怎样才能看到 li hover w?
- html - 在 MaterializeCSS 中垂直对齐并排列
- chart.js - 有没有办法进行自动滚动?