zoukankan      html  css  js  c++  java
  • 论坛中不同类型的贴的排序问题(涉及数据库的:CASE... END)

    在论坛中,会有不同类型的帖子,比如说:普通贴、精华帖、置顶帖;

    论坛的这些贴子会根据不同的类型进行排序,当然不仅仅只是看帖子类型,还有贴子的动态情况来进行排序。

    在这里演示一下简单的帖子排序,我们只关注帖子的最新动态时间和帖子类型进行排序。

    其中最新动态的时间是这样确定的:如果刚创建的新帖,那么该帖子的最新动态时间就为该帖子的创建时间;如果有最新的回复,那么最新的动态时间就为最新回复的时间;

    排序条件:

      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 ;

  • 相关阅读:
    矩阵树(Matrix-Tree)定理精华
    【面试题flex】关于弹性盒子中 flex: 0 1 auto 的一系列问题
    纯函数-Javascript
    uniapp 低功耗蓝牙使用(经典蓝牙用native.js)
    uniapp截屏
    unicloud数据聚合处理
    uniapp的post请求失效问题
    unicloud链表查询
    uni-id的使用
    坐标转换
  • 原文地址:https://www.cnblogs.com/JamKong/p/4599540.html
Copyright © 2011-2022 走看看