论坛中不同类型的贴的排序问题(涉及数据库的:CASE... END)
来源:互联网 发布:阿佳妮 知乎 编辑:程序博客网 时间:2024/06/05 06:47
在论坛中,会有不同类型的帖子,比如说:普通贴、精华帖、置顶帖;
论坛的这些贴子会根据不同的类型进行排序,当然不仅仅只是看帖子类型,还有贴子的动态情况来进行排序。
在这里演示一下简单的帖子排序,我们只关注帖子的最新动态时间和帖子类型进行排序。
其中最新动态的时间是这样确定的:如果刚创建的新帖,那么该帖子的最新动态时间就为该帖子的创建时间;如果有最新的回复,那么最新的动态时间就为最新回复的时间;
排序条件:
1. 最新动态时间越新越靠前
2. 普通贴跟精华贴之间在排序上没有区别,置顶帖肯定是最顶层的。
也就是说,排序的时候先排置顶帖,并且根据最新动态的时间排序置顶帖之间的顺序,然后再根据最新动态时间去排普通贴和精华帖的顺序。
那么我们在数据库中查询帖子集合的时候,根据SQL语句就查询出排好序的数据,该怎么做呢?
我们此时就要用到SQL的CASE WHEN ? THEN ? (,WHEN ? THEN ) ELSE ? END。
如: SELECT * FROM Topic t WHERE t.forum = ? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC , t.lastUpdateTime DESC ;
0 0
- 论坛中不同类型的贴的排序问题(涉及数据库的:CASE... END)
- 数据库中case...when...then...end语句的使用
- mysql数据库中case...when...then...end语句的使用
- SQL中 case when then end的用法
- MySql 中 case when then else end 的用法
- MySql 中 case when then else end 的用法
- MySql中case when else end的用法小总
- MySql 中 case when then else end 的用法
- SQL中case,when,then,end的用法(…
- MySql 中 case when then else end 的用法
- MySql-中-case-when-then-else-end-的用法
- MySql 中 case when then else end 的用法
- 面试过程中涉及的问题
- 字符集涉及的问题
- 多线程涉及的问题
- case when.... else...end 的用法
- oracle case ..when..end 的使用
- CASE WHEN ELSE END的一个用法
- Mysql 查询缓存
- mysql将时间戳直接转换成日期时间
- [leetcode] 124. Binary Tree Maximum Path Sum
- hadoop权限说明 2.4.1
- 数据清洗小记(15):DECODE利用sign函数做大小值判断
- 论坛中不同类型的贴的排序问题(涉及数据库的:CASE... END)
- javascript的克隆--深拷贝
- 嵌入式Linux开发教程:Linux内核
- Compressed Texture Formats in Metal
- asp.net mvc 、 ajax 批量上传文件
- RxJava defer操作符
- 年轻人都会犯什么错?(转载quora)
- 如何<td>中的内容靠左上方显示?
- OC的一些风格注意点