MySQL之ORDER BY同一个字段,不同值排序
通常情况下,在MySQL中我们可以使用ORDER BY对一个或多个字段进行升、降排序。但是有时候我们可能想按着自己想要的顺序排序,尤其在枚举类型中,就可能需要定制化排序。
基础表数据:
id day1 day2
1 1 2
2 1 7
4 1 4
5 2 2
6 2 8
7 2 3
8 3 3
9 3 6
10 3 4
我们可以升序、降序排序
-- 升序
SELECT * FROM dx_info ORDER BY day1
-- 降序
SELECT * FROM dx_info ORDER BY day1 DESC
但有时我们想按着 1->3->2 或者2->3->1等等方式排序,则可以将排序值附上,但是sql中的顺序和我们的排序是相反的。
-- 1->3->2
SELECT * FROM dx_info ORDER BY day1=2, day1=3, day1=1
--数据返回如下
1 1 2
2 1 7
4 1 4
8 3 3
9 3 6
10 3 4
5 2 2
6 2 8
7 2 3
-- 2->3->1
SELECT * FROM dx_info ORDER BY day1=1, day1=3, day1=2
-- 数据返回如下
5 2 2
6 2 8
7 2 3
8 3 3
9 3 6
10 3 4
1 1 2
2 1 7
4 1 4
今天在项目中突然遇到了一个枚举字段多个不同值的排序,结果顺序是相反的,差点按着多个字段排序的逻辑思考(多个字段顺序排)。这个知识点忘记了,特此记录一下。