2014-12-06 15 views
-1

我一直在摸索我的头,最好的办法就是做一个小论坛,并且想改变帖子的顺序。MYSQL不到1小时就可以得到第一个结果然后显示剩下的结果

ID | Subject | lastpost 
____________________ 
1 | Test | 2014-06-2012 00:00:00 
2 | Test | 2014-06-2012 00:00:00 
3 | Test | 2014-06-2012 00:00:00 
4 | Test | 2014-06-2012 00:00:00 
5 | Test | 2014-06-2012 00:00:00 
6 | Test | 2014-06-2012 00:00:00 
7 | Test | 2014-06-2012 00:00:00 

理想我想它来显示结果,其中lastpost < 60分钟THEN显示剩下由ID递减

我已经试过

SELECT * FROM `table` ORDER by `lastpost` > (time), `id` desc 

但似乎画空白。

在此先感谢。

回答

2

你想:

SELECT * 
FROM table 
ORDER BY (`lastpost` > date_sub(now(), interval 60 minute)) DESC, 
     (CASE WHEN `lastpost` > date_sub(now(), interval 60 minute) THEN lastpost ELSE NULL END) DESC, 
     id; 

第一个条件首先将其最近发表的文章。第二种按发布日期排序(推测是最近的第一个)。其余按id desc排序。

+0

用lastpost对表格进行排序,但是我希望它能够显示整个表格,而不仅仅是一小时的帖子。因此,按照上次更新的顺序排序第一个1小时的帖子,然后按ID降序排列其余的表。 – 2014-12-06 17:17:50

+0

我没有足够的积分downvote。我刚刚测试过,但它返回一个语法错误。 – 2014-12-06 17:37:31

+0

'where'应该是'by by order'。 – 2014-12-06 17:42:40

0

我认为lastpost是列类型datetime而不是一个字符串 - 如果没有,你应该改变它。 所以

SELECT * FROM table WHERE lastpost > NOW() - INTERVAL 1 HOUR ORDER BY id DESC 

应该解决您的问题。

+0

谢谢,但这不是我问的问题,我问如何显示在一小时内按帖子排序的表的第一个表,然后按id desc排序的表的其余部分。 – 2014-12-06 17:22:59