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;
相关推荐
FQNmxDG4S15 分钟前
Maven依赖管理:版本冲突解决与生命周期控制
java·数据库·maven
热爱运维的小七34 分钟前
告别内存溢出:ActiveMQ 性能诊断与全流程优化
数据库·it运维·activemq·devops
@小柯555m1 小时前
MySql(高级操作符--操作符混合运用)
数据库·sql·mysql
CDN3601 小时前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库
bzmK1DTbd1 小时前
JDBC编程规范:PreparedStatement与事务管理
数据库·python·eclipse
卧室小白1 小时前
Redis-哨兵模式
数据库·redis·缓存
GottdesKrieges1 小时前
OceanBase恢复常见问题
java·数据库·oceanbase
卧室小白2 小时前
redis-配置
数据库·redis·缓存
向風而行2 小时前
MySQL详解
数据库·mysql
belldeep3 小时前
本草纲目:如何应用 PostgreSQL 实现【中医药】主题数据库 ?
数据库·postgresql·本草纲目