我有一个 post
表和一个 reply
表。两个表都有一个 created
列,用于记录创建时间。 post
表有一个 last_reply_created
,并且每当对具有该帖子 ID 的帖子进行回复时就会更新。
第一个问题:在帖子页面中,我想显示按帖子表中的 last_reply_created
或 created
排序的所有帖子。
第二个问题:针对这个问题,你能更好地设计帖子和回复表吗?
我的解决方法是在创建帖子时插入 last_reply_created
。
最佳答案
在收到回复之前,您的 last_reply_created
应为 NULL,并且回复的创建时间应始终比 created
值更新。这允许您使用 coalesce
像这样:
select *
from your_table
order by coalesce(last_reply_created, created) desc
大概每一行都创建了一个非 NULL 。
我认为在帖子表中缓存 last_reply_created
值没有任何问题。如果您要经常使用它,那么一遍又一遍地计算它就没有多大意义。
关于mysql 按多列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934711/