論壇的這些貼子會根據不同的類型進行排序,當然不僅僅只是看帖子類型,還有貼子的動態情況來進行排序。
在這裏演示一下簡單的帖子排序,我們只關注帖子的最新動態時間和帖子類型進行排序。
其中最新動態的時間是這樣確定的:如果剛創建的新帖,那麼該帖子的最新動態時間就爲該帖子的創建時間;如果有最新的回覆,那麼最新的動態時間就爲最新回覆的時間;
排序條件:
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 ;