mysql数据表TABLE_A中有字段id,parent_id,写出可以通过id查询数据层级的sql
时间: 2024-06-02 12:13:17 浏览: 20
SELECT t1.*, t2.parent_id as parent_parent_id, t3.parent_id as parent_parent_parent_id
FROM TABLE_A t1
LEFT JOIN TABLE_A t2 ON t1.parent_id = t2.id
LEFT JOIN TABLE_A t3 ON t2.parent_id = t3.id
WHERE t1.id = [输入的id];
相关问题
mysql 菜单数据递归查询sql怎么写, 不是mysql 8 版本,没有level字段 使用parent_id 查询、
假设你的菜单表结构如下:
```
CREATE TABLE menu (
id INT PRIMARY KEY,
name VARCHAR(50),
parent_id INT
);
```
其中,`id` 是菜单项的唯一标识,`name` 是菜单项的名称,`parent_id` 是这个菜单项的父菜单项的 ID。如果一个菜单项没有父菜单项,则其 `parent_id` 为 NULL。
下面是一种递归查询菜单的 SQL 语句:
```
WITH RECURSIVE cte_menu AS (
SELECT id, name, parent_id
FROM menu
WHERE parent_id IS NULL
UNION ALL
SELECT m.id, m.name, m.parent_id
FROM menu m
JOIN cte_menu c ON m.parent_id = c.id
)
SELECT id, name, parent_id
FROM cte_menu;
```
这个 SQL 语句使用了 MySQL 中的递归公共表表达式(Recursive Common Table Expression,简称 CTE)。它首先找到所有根菜单项(即 `parent_id` 为 NULL 的菜单项),然后递归地查询它们的子菜单项,直到所有菜单项都被查询出来。
在递归查询过程中,我们使用 `JOIN` 操作将菜单表和递归查询的临时表连接起来,从而得到当前菜单项的子菜单项。最终,我们从递归查询的临时表中选择所有菜单项的 ID、名称和父菜单项的 ID。
需要注意的是,递归查询可能会导致性能问题。如果你的菜单项比较少,那么这个 SQL 语句应该可以满足你的需求。如果菜单项比较多,那么你可能需要考虑使用其他技术,比如嵌套集模型或者闭包表。
表sys_role有id以及parent_id字段,parent_id表示该数据的父级,写一个mysql查询语句,根据输入id,查出所有该id对应数据的子节点数据
假设输入的id为1,可以使用如下的MySQL查询语句来查出所有id为1的数据的子节点数据:
```
WITH RECURSIVE cte AS (
SELECT id, parent_id
FROM sys_role
WHERE id = 1
UNION ALL
SELECT sys_role.id, sys_role.parent_id
FROM sys_role
JOIN cte ON sys_role.parent_id = cte.id
)
SELECT * FROM cte;
```
这个查询语句使用了递归公共表达式(Recursive Common Table Expression,简称CTE),通过不断迭代联接sys_role表来查出所有id为1的数据的子节点数据。查询结果包含所有子节点数据的id和parent_id信息。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)