我知道这个问题经常出现,但今天我找不到我正在寻找的答案.我有一个这个架构的表.
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)
请注意,自联接应该是外部联接,这样您就不会错过没有子项的父注释.