排序
排序是项目必须要考虑到的细节,可以提高用户的体验度。比如:订单一般按照时间的降序展示;学生信息一般按照姓名的升序展示等;这些都是比较基础的排序。
顺带复习一下:
-- 排序关键字
order by
-- 升序关键字
asc(默认升序)
-- 降序关键字
desc
然而,近期遇到这样的需求,如下:
核心数据库字段:
1、发布标识:push_flg;1:发布;0:不发布;
2、天:day;从1~n;
需求:
1、没有发布的数据,按照天的升序展示;可以快速看到最近已经发布的数据;
2、发布的数据,按照天的降序展示;方便按照天查找数据;
发布 | 天 |
---|---|
1 | 5 |
1 | 4 |
1 | 3 |
1 | 2 |
0 | 1 |
0 | 6 |
0 | 7 |
0 | 8 |
0 | 9 |
实现
借助 SQL 中的 case when 关键字,判断发布标识。
select * from tb
order by
case when push_flg = 1 then
day
end desc,
case when push_flg = 0 then
day
end