PHP/MySql 选择与回复分组的评论

标签 php mysql sql

我正在编写一个脚本来处理类似于 facebook 的状态/回复的评论。基本上,一个项目可以有评论,用户可以回复该评论(最多一层)。

我的表设置如下:

Comments: [ Comment_ID | User_ID | Content | etc...]
Comments_Reply: [ Comment_ID | Is_Reply_To ] 

因此,如果用户回复评论 #555,它会像常规评论一样出现在评论表中,然后也会在 Comments_Reply 中获得一行 [ 555 | 新评论 ID ]

我怎样才能选择按以下顺序排列的评论:

[ 555 | ....
[ New Comment that replies to 555
[556 | ....
[557 | ....

等等...回复在评论回复后按顺序出现。我正在使用 PHP 和 MySql。

最佳答案

好的,我想我现在得到了你想要的。我没有办法快速测试此函数的 MYSQL 版本,但 SQLite 版本运行良好,而且根据文档,MySQL 应该同样运行良好。不过可能是在 MySQL 上执行此操作的更好方法。

SQLite:

SELECT a.*, IFNULL( b.Is_Reply_To, a.Comment_ID ) as Is_Reply_To FROM Comments a LEFT JOIN Comments_Reply b HAVING(Comment_ID) ORDER BY Is_Reply_To ASC, a.Comment_ID ASC

MySQL

SELECT a.*, IF( IS NULL(b.Is_Reply_To), a.Comment_ID, b.Is_Reply_To ) as Is_Reply_To 从 Comments a LEFT JOIN Comments_Reply b HAVING(Comment_ID) ORDER BY Is_Reply_To ASC, a.Comment_ID升序

这会为我的 SQLite 生成这些结果。

Comment_ID Is_Reply_to
1          1
10         1
11         1
2          2
12         2
3          3
13         3
14         3
4          4
5          5
6          6
7          7
8          8
9          9
15         15

关于PHP/MySql 选择与回复分组的评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222752/

相关文章:

php - 启用 SSL 但网站拒绝安全加载

php - 使用 PHP 解析 pdftk dump_data_fields?

javascript - 在 JavaScript 中通过 MySql 验证输入

php - 需要与函数调用的内联代码

sql - 这是我在 MySQL 中尝试做的事情的最佳查询吗?

mysql - 使用聚合函数从查询中选择非组字段

提取新记录的sql查询

sql - 用于 Linux 操作系统的 azure devops 发布管道中的自动化 SQL 部署任务

mysql - 停止来自 mysql 终端的警告

mysql - SQL 密集索引和稀疏索引