注意:此问题已更新以反映我们目前正在使用 MySQL,这样做后,我想看看如果我们切换到支持 CTE 的数据库会更容易。
我有一个带有主键id和外键的自引用表parent_id。
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| parent_id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| notes | text | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
给定 a name,如何查询顶级父级?
给定 a name,如何查询id …
我有一张comments表,可以简化为:
comments
=======
id
user_id
text
parent_id
Run Code Online (Sandbox Code Playgroud)
where 可以parent_id为空,但可能是其父注释的键。
现在,我如何才能select对特定评论的所有后代?
评论可能低了好几层……
我创建了一个名为“ vegs ”的表,并像这样插入了值。
id name parent
--------------------------------------
1 fruits 0
2 Apple 1
3 Orange 1
4 Grape 1
5 Green Apple 2
6 Red Apple 2
Run Code Online (Sandbox Code Playgroud)
我想递归获取孩子“ 6 ”的所有父母。