我有一个名为MyTable的表,有3列ID、月、年。
ID ¦ Months ¦Years
----------------------
1 ¦ December¦ 2019
2 ¦ January ¦ 2019
3 ¦ February¦ 2020
4 ¦ January ¦ 2020
我使用查询
"Select * from MyTable ORDER BY Years"
OutPut。
ID ¦ Months ¦Years
----------------------
1 ¦ December¦ 2019
2 ¦ January ¦ 2019
3 ¦ February¦ 2020
4 ¦ January ¦ 2020
然后我试着查询
"Select * from MyTable ORDER BY Months, Years"
输出。
ID ¦ Months ¦Years
----------------------
1 ¦ December¦ 2019
3 ¦ February¦ 2020
2 ¦ January ¦ 2019
4 ¦ January ¦ 2020
但我要的是这样的输出
ID ¦ Months ¦Years
----------------------
2 ¦ January ¦ 2019
1 ¦ December¦ 2019
4 ¦ January ¦ 2020
3 ¦ Febuary ¦ 2020
我是这个论坛和编程的新手,如果这个问题是重复的,我很抱歉。我已经搜索了我的问题,但我没有找到确切的解决方案。
试用
Select * from MyTable ORDER BY Years, Months
当你说 ORDER BY A, B
顺序为 B
只有在以下情况下才会进行 A
是一样的。请看《ORDER BY几列实例》中的 "ORDER BY几列实例"。https:/www.w3schools.comsqlsql_orderby.asp.
但正如 @GMB 在另一个答案中所指出的那样,你最好将其转换为日期,并以此排序。否则对于任何给定的年份,月份将按字母顺序排列,而不是基于实际的日历顺序。
你的尝试失败了,因为你把月份作为名称存储,所以你不能用它来排序。
你可以将两列的值以如下格式连接起来。'December 1, 2019'
,然后用 功能 DateValue()
将其转换为 date
数据类型,你可以用它来进行排序。
SELECT * FROM mytable ORDER BY DateValue(Months & ' 1, ' & Years)