【发布时间】:2019-08-27 13:35:30
【问题描述】:
我有存储 cmets 的表。 cmets 具有不同的深度,并且它们在一个具有 id 和 parent_id 的表中相互关联。深层次的最大值是三,我想用一个查询而不是三个查询来选择它们,并使用 foreach 三次。
评论表:
id title parent_id
1 'where are you?' NULL
2 "im at home" 1
3 "what is time in your country?" NULL
4 "it's 3 pm" 3
5 "oh that's cool" 4
第一层是具有 parent_id = NULL 的 cmets 我使用这些查询来获取它们:
$first = $this->db->query("SELECT title FROM comment WHERE parent_id IS NULL");
$second = $this->db->query("SELECT title FROM comment WHERE parent_id IN (SELECT id FROM comment WHERE parent_id IS NULL)");
$third= $this->db->query("SELECT title FROM comment WHERE parent_id IN (SELECT id FROM comment WHERE parent_id IN(SELECT id FROM comment WHERE parent_id IS NULL))");
有没有办法通过一个查询来获取它们?
【问题讨论】:
-
您使用的是哪个版本的 MySQL?
-
如果您使用 MySQL 8,请查看递归 CTE:dev.mysql.com/doc/refman/8.0/en/…
-
@ragol 我不熟悉这个。可以帮我写吗,好吗?
-
@Strawberry 我使用的是 15.1 版
-
@Strawberry 哦,那个版本的 MariaDB :))。我用的是 7.3.6