MySQL 生成当天订单流水号 - 详细教程
可以使用以下 SQL 语句在 MySQL 中生成当天的订单流水号:
SELECT CONCAT('ORDER-', DATE_FORMAT(NOW(), '%Y%m%d'), '-', LPAD(COALESCE(MAX(SUBSTRING(order_number, 11)), 0) + 1, 4, '0')) AS order_number
FROM orders
WHERE order_number LIKE CONCAT('ORDER-', DATE_FORMAT(NOW(), '%Y%m%d'), '%');
这个 SQL 语句将生成一个类似于 'ORDER-20230315-0001' 的订单流水号。具体实现过程如下:
- 
使用 CONCAT 函数将 'ORDER-' 和当天日期(格式为 '%Y%m%d')连接起来。
 - 
使用 DATE_FORMAT 函数获取当前时间的日期部分,并将其格式化为 '%Y%m%d'。
 - 
使用 LPAD 函数将订单数量增加到 4 位数,用 '0' 填充左侧不足的位数。
 - 
使用 COALESCE 函数获取之前生成的最大订单号(使用 SUBSTRING 函数截取订单号的最后 4 位数),如果没有先前的订单,则为 0。
 - 
将 ORDER-日期-订单数量连接在一起,生成新的订单流水号。
 - 
在 orders 表中查找所有以 'ORDER-日期' 开头的订单号,并将其传递给 LIKE 操作符。
 - 
将结果作为 order_number 返回。
 
原文地址: https://www.cveoy.top/t/topic/nbTf 著作权归作者所有。请勿转载和采集!