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;
相关推荐
雨落Liy21 分钟前
SQL 函数从入门到精通:原理、类型、窗口函数与实战指南
数据库·sql
Kt&Rs1 小时前
MySQL复制技术的发展历程
数据库·mysql
小小菜鸡ing1 小时前
pymysql
java·服务器·数据库
手握风云-1 小时前
MySQL数据库精研之旅第十六期:深度拆解事务核心(上)
数据库·mysql
boonya2 小时前
Redis核心原理与面试问题解析
数据库·redis·面试
沙二原住民2 小时前
提升数据库性能的秘密武器:深入解析慢查询、连接池与Druid监控
java·数据库·oracle
三毛20043 小时前
玳瑁的嵌入式日记D33-0908(SQL数据库)
jvm·数据库·sql
叫我龙翔3 小时前
【MySQL】从零开始了解数据库开发 --- 库的操作
数据库·mysql·数据库开发
没有bug.的程序员3 小时前
Redis Stream:轻量级消息队列深度解析
java·数据库·chrome·redis·消息队列
GottdesKrieges3 小时前
OceanBase容量统计:租户、数据库、表大小
数据库·oceanbase