版权声明:本文为博主原创文章,未经博主允许欢迎转载。 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)要放在最后