mysql 按多列排序

标签 mysql

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

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

第二个问题:针对这个问题,你能更好地设计帖子和回复表吗?

我的解决方法是在创建帖子时插入 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/

相关文章:

mysql - 解决连接到 API 时出现的错误 404

PHP:从 MySQL Blob 中直接将图像检索到 <img> 标记中

php - 如何在一行中获取数组(fetch)和元素?

php - 复选框来自 mysql 循环的数组项目未发布到邮件页面

mysql问题,ib_logfile0和ib_logfile1中有数据但mysql数据库中没有数据

php - 网页上的照片破裂

mysql drop table 如果存在于程序内部

mysql - 如何在一些约束下存储多条记录?

php - 如何从 MySql 的表单中转换日期

php - 在 codeigniter 中删除一个文件