MySQL联合主键自增分别产生递增id

本文介绍了一种在数据库中按部门递增生成唯一编号的方法。通过创建一个带有自增长ID和部门信息的联合主键表,实现了不同部门内员工编号的自动递增。这种方法不仅提高了效率,还简化了编号生成的复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比如员工表,要在部门内递增生成编号 ,例如 

 

t_user表

       dept          user_no_name

--------------------------------------

       财务部         财务部001

      研发部         研发部001

      财务部        财务部002

      财务部         财务部003

      研发部         研发部002

 

为了 生成user_no_name后面的序号,可以这么做

例如对财务部的: 

SELECT CAST(REPLACE(UPPER(user_no_name), '财务部', '')  AS UNSIGNED)
 AS sn 
 FROM t_user

然后对这个sn+1

但有个更高效的方法。

建一个user_no表:

id           dept

----------------------------------------

1           财务部

1           研发部

2           研发部

3           研发部

2           财务部

 

user_no表是先把dept,id设为联合主键,然后把id设为自增长,

那么插入该表时,每插入一条财务部的数据,id就会自增长一次,每插入研发部数据,id也会分别增长一次,

也就是说,id的自增长是按dept分组的。

有了这个id之后,就可以与dept一起组装出"财务部001"这样的user_no_name。

 

注意,设联合主键的顺序很关键,自增长的字段(id)要放在最后

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值