mysql根据子级id得到最顶层父级id
时间: 2023-10-17 12:14:44 浏览: 143
MySQL通过自定义函数实现递归查询父级ID或者子级ID
5星 · 资源好评率100%
在MySQL中,可以使用递归查询和自连接查询来获取树形结构中子级的最顶层父级。以下是使用自连接查询的示例:
假设有一个表结构如下:
```
CREATE TABLE tree (
id INT,
parent_id INT,
name VARCHAR(50),
PRIMARY KEY (id),
FOREIGN KEY (parent_id) REFERENCES tree(id)
);
```
我们可以使用以下查询语句来获取给定子级的最顶层父级:
```
WITH RECURSIVE cte AS (
SELECT id, parent_id, name
FROM tree
WHERE id = <子级id>
UNION ALL
SELECT t.id, t.parent_id, t.name
FROM tree t
JOIN cte ON t.id = cte.parent_id
)
SELECT id, name
FROM cte
WHERE parent_id IS NULL;
```
在上面的查询中,使用了MySQL的递归查询语法(`WITH RECURSIVE`),以及自连接查询。首先,从给定的子级开始,查询其父级数据,并将其与子级数据合并。然后,继续查询合并后的数据的父级,直到查询到最顶层的父级。最后,从递归查询的结果中筛选出`parent_id`为空的数据,即为给定子级的最顶层父级。
阅读全文