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语句,可以根据指定的条件将查询结果中的数据置顶。