作为一名小白,第一次写文章,就不花里胡哨的追求好看了……
需求:公司生成订单号时规定了格式——“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)
粗体部分是可能要修改的参数,返回值就是新的订单号