MySQL SQL语句总结

背景:客户想生成 英文字符+数字 这样的流水号,代码实现,流水号要连续,不能重复生成;

下面是查询最新历史流水号的SQL语句;

1. 因为流水号是字符类型,字符排序英文部分排序还正常,但是到数字部分999会比1000大,这就不合理了,需要把999这样的数字字符串转换类型为数字类型再进行排序;

SELECT MAX(code) FROM client_code where is_delete=0 and is_active=0

2.因为用到MAX函数,MySQL不要求用统计函数就必须用GROUP BY 分组,所以即使没查到数据,返回的List集合也会有一个空元素,有空元素怎么解决?就要用到GROUP BY分组,本来order_type字段是没有的,原来的的code去分组,这是错误的,每个编码分一组,想想都离谱,新建了一个order_type字段,按order_type分组,表示查询这类型流水号的最新流水号记录;

SELECT MAX(CAST(SUBSTR(code, 9) AS SIGNED)) FROM client_code where is_delete=0 and is_active=0 group by code_type

  

posted @ 2021-09-30 18:03  尘世间迷茫的小书童  阅读(83)  评论(0编辑  收藏  举报