mysql按多列排序

时间:2011-05-09 09:03:43

标签: mysql

我有一个post表和一个reply表。两个表都有一个created列,用于记录何时创建。并且post表格有last_reply_created,并且每当对具有该帖子ID的帖子进行回复时都会更新。

第一个问题:在帖子页面中,我想显示按帖子表中的last_reply_createdcreated排序的所有帖子。

第二个问题:你能否就这个问题更好地设计帖子和答复表?

我的解决方法是在创建帖子时插入last_reply_created

1 个答案:

答案 0 :(得分:1)

在有回复之前,您的last_reply_created应为NULL,并且回复的创建时间应始终比created值更新。这允许您像这样使用coalesce

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

可能每行都有一个非NULL created

我认为在帖子表中缓存last_reply_created值没有任何问题。如果你要经常使用它,那么一遍又一遍地计算它是没有多大意义的。