【发布时间】:2015-02-13 19:45:26
【问题描述】:
您好,我有一个用于 cmets 和回复的自连接 MySQL 表。
CREATE TABLE comments (id INT, parent_id INT, comment VARCHAR(50));
INSERT INTO comments VALUES
(1, 0, 'comment 1' ),
(2, 0, 'comment 2' ),
(3, 0, 'comment 3' ),
(4, 1, 'comment 1 - reply 1' ),
(5, 0, 'comment 4' ),
(6, 3, 'comment 3 - reply 1' ),
(7, 1, 'comment 1 - reply 2' ),
(8, 0, 'comment 5' );
只有一个级别的回复。也就是说,回复只能与顶级评论相关联(其中 parent_id = 0)。
我使用以下查询来显示每个顶级评论(其中 parent_id = 0)和每个与 cmets 相关的回复。
SELECT *
FROM comments
ORDER BY IF(parent_id = 0, id, parent_id) desc , parent_id != 0, id desc
输出:
id parent_id comment
-------------------------
8 0 comment 5
5 0 comment 4
3 0 comment 3
6 3 comment 3 - reply 1
2 0 comment 2
1 0 comment 1
7 1 comment 1 - reply 2
4 1 comment 1 - reply 1
当前查询可以很好地满足我的需要。
我的问题是如何限制每条评论的回复数量?例如。显示最新的 50 个顶级 cmets,每条评论最多回复 2 条。
【问题讨论】:
标签: mysql sql hierarchy self-join