MYSQL按三列排序

时间:2015-08-23 00:05:07

标签: php mysql

我目前有一个MYSQL表格如下: 开始日期,上次发布日期,粘滞线程

我目前正在做

ORDER BY sticky DESC, lastpostdate DESC, date DESC

哪个几乎可以工作,它将粘性线程放在顶部(应该是这样),然而它将最新的线程放在底部,并且回复的线程在顶部,即使在回复之后创建了新线程

示例表:

 Date         lastpostdate   sticky
 1440291308 | 0            | 0
 1938275440 | 1938293999   | 1
 1440205782 | 1440212200   | 0

应该订购2,1,3,因为2是粘性的,1是新线程,3是回复但是在1之前发布。

1 个答案:

答案 0 :(得分:1)

由于您将lastpostdate设置为0,因此预期正常工作。如果上一个排序列的值相等,则仅使用后续排序列。

例如,如果两个粘滞值都设置为0,那么订单将查找下一个排序列。如果第一个和第二个排序列是等效的,则仅查询第三列。

您应该将lastpostdate设置为最初创建线程的日期,这样可以解决您的问题,并且无需使用第三个排序列。