首页 > 解决方案 > SQL排序查询

问题描述

我有一个 sql 表,其中有一列名为reference_number.

reference_number具有x-MMYY-xxxx格式的值。(MM代表月份,而YY代表年份。 - xxxx是自动递增的。)

我的问题是,如果我将以下值输入reference_number

2012 年 3 月 (x-0312-xxxx)

2012 年 4 月 (x-0412-xxxx)

2013 年 1 月 (x-0113-xxxx)

ORDER BY reference_number会将它们排序为

x-0113-xxxx

x-0312-xxxx

x-0412-xxxx

有没有办法reference_number按正确的日期顺序排序。

标签: phphtmlmysql

解决方案


我假设您的reference_number列的数据类型是字符字段?

按字符字段排序将“尽力”理解数据并将其解释为它想要排序的格式,在这种情况下,您会注意到它将参考的日期部分解释为数值,因此,将以这种方式对它们进行排序。

字母数字数据将按此排序。

如果您需要按日期排序的数据,您可以使用许多解决方案,但最终您将需要一个DateTime值来排序。

通过直接插入或数据库触发器等添加一reference_date列并将日期值添加到其中。

恕我直言,您必须具有日期值才能按日期排序,但是您决定实现这一点。


推荐阅读