SQL递归查询树结构语法

对于树形结构数据,经常会有递归查询的需求,语法如下:

注意替换sql中的表名id入参

mysql

sql 复制代码
WITH RECURSIVE node_cte (id, parent_id) 
AS (
  SELECT id, parent_id 
  FROM my_table -- 表名,换成要查询的名称
  WHERE id = :id -- 根节点id,换成要查询的根节点id
  UNION ALL
  SELECT t.id, t.parent_id 
  FROM my_table t
  JOIN node_cte nc ON t.parent_id = nc.id
)
SELECT * 
FROM my_table 
WHERE id IN (SELECT id FROM node_cte)

postgresql

sql 复制代码
WITH RECURSIVE node_cte AS (
  SELECT id, parent_id
  FROM my_table -- 表名,换成要查询的名称
  WHERE id = :id -- 根节点id,换成要查询的根节点id
  UNION ALL
  SELECT t.id, t.parent_id
  FROM my_table t -- 表名,换成要查询的名称
  JOIN node_cte nc ON t.parent_id = nc.id
)
SELECT *
FROM sp_permission
WHERE id IN (SELECT id FROM node_cte) order by id;
相关推荐
小陳参上3 小时前
用Python创建一个Discord聊天机器人
jvm·数据库·python
changhong19864 小时前
如何在 Spring Boot 中配置数据库?
数据库·spring boot·后端
执笔画情ora7 小时前
Postgresql数据库管理-pg_xact
数据库·postgresql·oracle
南棱笑笑生7 小时前
20260310在瑞芯微原厂RK3576的Android14查看系统休眠时间
服务器·网络·数据库·rockchip
XDHCOM8 小时前
ORA-32152报错咋整啊,数据库操作遇到null number问题远程帮忙修复
服务器·数据库·oracle
专利观察员8 小时前
输配电行业创新转型实践:南宁迪**力有限公司的专利策略调整、专利检索工具采用
数据库·科技·专利·专利申请
jgyzl8 小时前
2026.3.9 Redis内存回收内存淘汰
数据库·redis·缓存
白露与泡影8 小时前
MySQL 时间类型选型避坑:timestamp 和 datetime 该怎么选?
数据库·mysql
青槿吖9 小时前
第二篇:告别XML臃肿配置!Spring注解式IOC/DI保姆级教程,从入门到真香
xml·java·开发语言·数据库·后端·sql·spring
运维 小白10 小时前
2. 部署mysql服务并监控mysql
数据库·mysql·adb