MySQL 排序两个栏位的方法 (使用IF)

讨论区很常见的排法是这样:「按照所有文章的发表时间排序,但是如果有最新回应的话,则是会把最新回应的时间一起排进去。」照古早的写法:SELECT * FROM `forum` ORDER BY `REPLY_TIME` DESC, `TIME` DESC;这样会爆掉,因为它会把 REPLY_TIME 都排完,才排 TIME ,而这并不是我们想要的。

MySQL 有提供 IF 的功能,用法: IF (bool,value1,value2)解释:当第一个参数为真时,回传 value1,否则传回 value2

可以改写成:SELECTIF(`REPLY_TIME` > `TIME`, `REPLY_TIME`, `TIME`) AS `TEMPTIME`, `ID`, `POST_TITLE`, `POST_CONTET`– 这边是其他栏位,而 TEMPTIME 则是产生的新栏位。FROM `forum`WHERE 条件子句ORDER BY `TEMPTIME` DESC;LIMIT 0, 资料笔数

重要的笔记……