嗨,我有一些文件记录,其编号如01 / 2020、02 / 2020以此类推,并且我使用order by子句按这些数字顺序获取记录,但它正确地从01/2020返回到10/2020,然后它告诉我100/2020是否有解决方案?请与我分享。
最佳答案
如果我的假设是正确的,因此该记录的格式为running_no/year
,那么您需要提取年份以包括在内。考虑下面的例子。
如果数据是这样的:
+----------+
| Value |
+----------+
| 01/2020 |
| 02/2020 |
| 10/2020 |
| 100/2020 |
| 01/2021 |
| 10/2021 |
+----------+
后面的4位数字代表运行年份,那么您可以通过几种方式从中提取年份。在这里,我展示了两个使用
RIGHT()
和SUBSTRING_INDEX()
的示例。example 1:
SELECT * FROM table ORDER BY RIGHT(Value,4) ASC, ABS(Value) ASC;
example 2:
SELECT * FROM table ORDER BY SUBSTRING_INDEX(Value,'/',-1) ASC, SUBSTRING_INDEX(Value,'/',1) ASC;
只要可以确定它将以您想要的方式返回结果,还有更多方法可以实现此目的。
关于php - 如何使用order by子句来正确获取记录,数据格式为01/2020,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60034480/