MySQL以MMDDYY格式返回新的顺序订单号 - #

时间:2009-09-30 19:05:36

标签: mysql

我有以下查询以MMDDYY-格式生成新的订单号,其中数字是今天订单序列中的下一个。

select concat(date_format(now(),'%m%d%y'),'-',ifNULL(max(right(po_number, LENGTH(po_number)-7)),0)+1) newPO 
from orders where left(po_number, 6) = date_format(now(),'%m%d%y')

这适用于订单1-9,但是当我达到10时,我将继续抓住第9个作为最大值,并且将永远无法生成MMDDYY-11作为订单号。我需要重新考虑这个问题,但我仍然坚持最有效的方式来解决它。任何人都有优雅的解决方案?这是一个用于测试的示例表结构。

CREATE TABLE orders (
po_number VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;

INSERT INTO orders (po_number)
VALUES ('093009-9'), ('093009-10');

谢谢!

1 个答案:

答案 0 :(得分:0)

你的表达式在最后分割出数字,然后根据它的文本计算max()。如果你想根据数值排序,你必须先将它()转换为数字。