我有一个post
表和一个reply
表。两个表都有一个created
列,用于记录何时创建。并且post
表格有last_reply_created
,并且每当对具有该帖子ID的帖子进行回复时都会更新。
第一个问题:在帖子页面中,我想显示按帖子表中的last_reply_created
或created
排序的所有帖子。
第二个问题:你能否就这个问题更好地设计帖子和答复表?
我的解决方法是在创建帖子时插入last_reply_created
。
答案 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
值没有任何问题。如果你要经常使用它,那么一遍又一遍地计算它是没有多大意义的。