排序012将1排在最前面
排序012将1排在最前面
这个是项目中遇到的一个排序问题,要求将正在进行中的排序到最前,从思路上讲,可以在mysql中处理,可以在后端语言中,那到数据后处理,也可以到前端来处理。
或者说将特定条件的数据置顶。
资料
https://blog.csdn.net/qq_27544423/article/details/94383958
Union来处理
需要写三遍sql(好像效果不好,之前同事遇到过)
select字段
增加额外字段,然后在order by的时候用上。还不如直接Order by 效果更好。
order by
关键代码如下:
ORDER BY (case when status=1 then 1 else 2 end),status desc
举例
SELECT * from yc_adverts ORDER BY (case when adstatus=1 then 0 else 2 end ) ,id desc;
满足特定条件
SELECT * FROM `w_user_contacts` WHERE `uid` = 76042197140504576
ORDER BY
CASE
WHEN phone = 18141901322 THEN 1
WHEN phone = 17695561638 THEN 1
ELSE
phone
END
直接用等式
SELECT * from yc_adverts ORDER BY adstatus=1 desc ;
FIELD
// 纯数字字段不用处理引号,比较好拼接
SELECT * from yc_adverts ORDER BY FIELD(`adstatus`,1,2,0)
// 一个引号全包住,搞定字符值字段
SELECT * from yc_adverts ORDER BY FIND_IN_SET(`post_title`,'A,B,C,D,E');
-- 注意:第一个参数不能是字符串,否则不起作用
备注:最近看公司的代码,发现也用到了field,还以为是新知识,没有想到已经记录过了。2021-11-28 17:04