php - 用于在一张表中显示和排序消息及其回复的 SQL

标签 php mysql sorting messaging

我为正在开发的 CMS 编写了一个简单的消息系统,但很难找到获取所有消息及其按最新顺序排列的回复(消息或回复)的最佳方法。

我有一个名为“messages”的表,其中包含以下字段: *id、事件[1,0]、主题、消息、日期时间、user_from、user_to、reply_id*

一切都很简单,主级别消息的 *reply_id* 为空,并包含回复的父 id。我不知道如何编写 SQL 来根据他们自己和他们的回复以 datetime DESC 顺序获取所有主要级别的消息。我确信这是通过某种 UNION 完成的,但我缺乏 SQL 技能。如果相同的 SELECT 可以给出每个主级别消息中的回复计数,那就太棒了!

任何帮助将不胜感激!

最佳答案

已经很晚了,我很累,但我想你可以尝试这样的事情:

SELECT main.*, COUNT(reply.id) AS cnt_replies, MAX(reply.datetime) AS max_datetime
FROM posts AS main
LEFT JOIN posts AS reply
    ON main.id = reply.reply_id
GROUP BY main.id
HAVING main.reply_id IS NULL
ORDER BY max_datetime DESC

编辑:固定查询
EDIT2:现在包含没有任何回复的消息

关于php - 用于在一张表中显示和排序消息及其回复的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400810/

相关文章:

php - 使用 cookie 在 PHP 中创建 "remember me"系统的安全方法是什么?

php - ImageMagick 安装,真还是假,如何检查? PHP

php - Eloquent Seeder - 仅在数据不存在时添加

php排序数组的三个维度

php - 按可用日期查询 woocommerce 预订

MYSQL返回空结果集?

mysql - 这个 SQL 语句需要 JOIN 吗?

.net - 使用 LINQ 进行拓扑排序

Jquery 拖放排序从列表到表格单元格不起作用

java - java中排序数组包含一些数组