SQL查询 - 按日期排序,也可以按组排序

时间:2011-12-27 19:40:14

标签: mysql sql group-by sql-order-by

OK女士和男士,我真的很感激一些帮助:

这是我的表:

ID     postID    replyID    content    entry_date  
1       0         40          hey         12/7  
2       0         40          hi          12/8  
3       0         40          whatsup     12/9  
4       2         40          why?        12/10  
5       0         40          who?        12/11  

我需要运行一个查询来得到它:

ID     postID    replyID    content    entry_date  
1       0         40          hey         12/7  
2       0         40          hi          12/8  
4       2         40          why?        12/10  
3       0         40          whatsup     12/9  
5       0         40          who?        12/11  

您将看到ID 3和4已切换。所以基本上我需要通过entry_date进行ASC,除非ID = POSTID,然后我需要将这两个组合在一起,并且还需要通过entry_date对这两个进行ASC。

这是我尝试过但我完全迷失了:

SELECT t1.ID, t1.postID, t1.replyID, t1.content, t1.entry_date
  FROM discussion t1, discussion t2
 WHERE t1.replyID = '40' AND t1.ID = t2.postID
 ORDER BY t1.entry_date ASC

除了找到一行ID =一行postID

之外什么也没做什么

1 个答案:

答案 0 :(得分:5)

您可以在CASE子句

中添加ORDER BY语句
ORDER BY 
  CASE WHEN postID = 0 THEN ID ELSE postID END
  , entry_date

这样做,你可以完全放弃连接,整个语句可以简化为

SELECT  ID
        , postID
        , replyID
        , content
        , entry_date
FROM    discussion
ORDER BY 
       CASE WHEN postID = 0 THEN ID ELSE postID END
       , entry_date

请注意,我的确认为参赛日期为DATETIME列,而不是VARCHAR列。