Mysql中查找断号,插入生成新订单号

作为一名小白,第一次写文章,就不花里胡哨的追求好看了……

需求:公司生成订单号时规定了格式——“DD”+年+月+自增编号,例如现在是2019年9月,本月生成的第一份订单号为:“DD2019090001”,之后是“DD2019090002”……订单在提交审核前允许删除,也就是说会产生断号。现在需要在生成新订单时查出断号填满。百度了很多文章都没有切实解决问题的,还是自己琢磨吧~~

以下为测试表:在这里插入图片描述
可以看到九月份少了尾号为003、004、007、008的单子,如果现在想补一份九月份订单(实际上是不存在补上月单子的这种需求的,实际上补的应该都是当月的缺号单子),新的订单号应该是“DD201909003”,SQL如下
SELECT CONCAT(‘DD’,min(cast(SUBSTR(orderNum,3) as UNSIGNED INTEGER)+1)) as newNum from (SELECT orderNum from test WHERE orderNum like ‘DD201909%’ order by orderNum asc) t
where not exists (SELECT ‘x’ from test where cast(SUBSTR(orderNum,3) as UNSIGNED INTEGER)=cast(SUBSTR(t.orderNum,3) as UNSIGNED INTEGER)+1)
粗体部分是可能要修改的参数,返回值就是新的订单号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值