Mysql 获取子项的最佳SQL语法

Mysql 获取子项的最佳SQL语法,mysql,join,Mysql,Join,我正在创建一个博客系统,我想得到帖子的评论。注释有一个多级树,但我只使用一个表来保存所有注释 您知道获得5条评论和您的孩子的评论(回复)的最佳语法吗 举例来说,如果我需要将回复数量限制在5个,那么如何在一个查询中完成 这是我表格的打印:blog\u评论 在blog\u comments表中使用自联接。这个查询将给出5篇最新的博客文章以及他们的一个后代的所有孩子 SELECT t1.id AS parentID, t2.id AS childID, t1.content AS parentCont

我正在创建一个博客系统,我想得到帖子的评论。注释有一个多级树,但我只使用一个表来保存所有注释

您知道获得5条评论和您的孩子的评论(回复)的最佳语法吗

举例来说,如果我需要将回复数量限制在5个,那么如何在一个查询中完成

这是我表格的打印:blog\u评论

blog\u comments
表中使用自联接。这个查询将给出5篇最新的博客文章以及他们的一个后代的所有孩子

SELECT t1.id AS parentID, t2.id AS childID, t1.content AS parentContent,
    t2.content AS childContent
FROM
(
    SELECT id, content
    FROM blog_comments
    ORDER BY creation_date DESC
    LIMIT 5
) t1
INNER JOIN blog_comments t2
    ON t1.id = t2.parent
ORDER BY t1.id, t2.id
更新:

我更喜欢下面的查询,它显示了最近的五篇博客文章,每一篇都在自己的行上,然后是所有的孩子们的回复。这与您希望在应用程序层中显示的内容更为相似

SELECT
    CASE WHEN t.childId = -1 THEN 'parent' ELSE 'child' END AS type,
    t.content
FROM
(
    SELECT childId, parentId, content FROM
    (
        SELECT -1 AS childId, id AS parentId, content AS content
        FROM blog_comments
        WHERE parent IS NULL
        ORDER BY creation_date DESC
        LIMIT 5
    ) t1
    UNION ALL
    SELECT t1.id AS childId, t1.parent AS parentId, t1.content AS content
    FROM blog_comments t1
    INNER JOIN
    (
        SELECT id
        FROM blog_comments
        WHERE parent IS NULL
        ORDER BY creation_date DESC
        LIMIT 5
    ) t2
        ON t1.parent = t2.id
) t
ORDER BY t.parentId, t.childId
以下是运行演示的链接:


表名为blog\u comments。您尝试过什么?(哦,请编辑您的问题,而不是将更正作为评论发布)谢谢您的回复。我尝试了
SELECT*FROM blog\u comments JOIN blog\u comments ON blog\u comments.parent=blog\u comments.id,其中blog\u comments.post\u id=1和我在查询(1066)中有错误
错误:不是唯一的表/别名:“blog\u comments”
。非常感谢!你是一位大师。