2011-05-09 80 views
0

我有一個post表和一個reply表。兩個表都有一個created列,它在創建時記錄。並且post表具有last_reply_created,並且每當對具有該帖子ID的帖子作出回覆時都會更新。mysql多列順序

第一個問題:在帖子頁面中,我想顯示帖子列表中第一個排序的所有帖子,以last_reply_createdcreated排序。

第二個問題:您可以更好地設計關於此問題的帖子和回覆表嗎?

我的解決方法是在創建帖子時插入last_reply_created

回答

1

您的last_reply_created應該爲NULL,直到出現答覆,並且答覆的創建時間始終應該比created值更新。這允許您使用coalesce這樣的:

select * 
from your_table 
order by coalesce(last_reply_created, created) desc 

想必每一行具有非NULL created

我看不到在緩存表中緩存last_reply_created值的問題。如果你要使用它很多,那麼保持一遍又一遍的計算並不合理。

+0

感謝您的提示,我從來沒有注意到改變先生!殺死我的答案,因爲你的答案足夠:) – 2011-05-09 09:40:53

+0

@David:我不是故意在你的遊行上下雨,但你總是必須留意那些NULL。 – 2011-05-09 10:02:40