选择Parent和Children With MySQL

mel*_*oon 10 mysql sql

我知道这个问题经常出现,但今天我找不到我正在寻找的答案.我有一个这个架构的表.

CREATE TABLE `comments` (
    `id` bigint(10) unsigned not null auto_increment,
    `parent_id` bigint(10) unsigned default 0,
    `date_sent` datetime not null,
    `content` text not null,
    PRIMARY KEY(`id`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

我想选择父行和这些行的子节点.我不允许孩子生孩子,所以这只是一个父母,有许多孩子.

我想我之前已经看到过这种做法,或者是内部联合.

ber*_*nie 25

父母是没有的记录parent_id.
孩子parent_id与父母评论相同id.

  SELECT ...
    FROM comments AS parent
         LEFT JOIN comments AS child 
         ON child.parent_id = parent.id
   WHERE parent.parent_id IS NULL
ORDER BY parent.id, child.id;
Run Code Online (Sandbox Code Playgroud)

请注意,自联接应该是外部联接,这样您就不会错过没有子项的父注释.

  • 如果我有孩子的孩子怎么办?我不需要有多个连接吗? (2认同)