mysql按照指定方式排序(数据置顶)

mysql按照指定方式排序(数据置顶)

在工作中,通常我们使用的排序方式为:按照指定列进行排序的语法顺序/倒序排序的查询

SELECT 列名
FROM 表名
ORDER BY 列名 ASC/DESC

假如:一张任务表task,属性字段任务ID(task_id),任务编号(task_num),任务名称(task_name),任务状态(task_type)[0:待开始,1:进行中,2:已结束],任务创建时间(create_time);
我们可以使用ORDER BY子句来按照create_time列对查询结果进行排序,如下所示:

SELECT task_id, task_num, task_name,task_type,create_time
FROM task
ORDER BY create_time DESC;

查询结果将按照create_time列进行降序排序,最新的任务日期将排在前面

有些场景下我们需要按照指定数据置顶的方式展示数据:进行中的的任务置顶,依次为待开始的任务,已结束的任务并按照最新任务在前进行展示。
数据置顶:我们可以在ORDER BY子句中使用CASE语句来进行条件排序。例如,如果想要将task_type为1的数据置顶,可以使用以下语句:

SELECT task_id, task_num, task_name,task_type,create_time
FROM task
ORDER BY CASE WHEN task_type = 1 THEN 0 when task_type = 0 then 1 ELSE 2 END, 
create_time DESC;

首先使用CASE语句来判断task_type 是否为1,如果是,则将排序值设为0,否则设为1。然后再根据create_time 列进行降序排序。这样就可以将task_type 为1的数据置顶,其余数据按照create_time 进行排序。

*:通过使用ORDER BY子句和CASE语句,可以根据指定的条件将查询结果中的数据置顶。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值