mysql order by 不同位数_MySQL之ORDER BY同一个字段,不同值排序

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

今天在项目中突然遇到了一个枚举字段多个不同值的排序,结果顺序是相反的,差点按着多个字段排序的逻辑思考(多个字段顺序排)。这个知识点忘记了,特此记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值