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

版权声明:本文为博主原创文章,未经博主允许欢迎转载。 https://blog.csdn.net/wuzuyu365/article/details/83930223

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

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)要放在最后

猜你喜欢

转载自blog.csdn.net/wuzuyu365/article/details/83930223
今日推荐