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;
相关推荐
静听山水10 小时前
Redis核心数据结构
数据结构·数据库·redis
流㶡10 小时前
MySQL 常用操作指南(Shell 环境)
数据库
QT.qtqtqtqtqt10 小时前
SQL注入漏洞
java·服务器·sql·安全
数据知道10 小时前
PostgreSQL 性能优化:连接数过多的原因分析与连接池方案
数据库·postgresql·性能优化
怣5010 小时前
MySQL子查询实战指南:数据操作(增删改查)与通用表达式
数据库·chrome·mysql
范纹杉想快点毕业10 小时前
从单片机基础到程序框架:构建嵌入式系统的完整路径
数据库·mongodb
数据知道10 小时前
PostgreSQL性能优化:如何定期清理无用索引以释放磁盘空间(索引膨胀监控)
数据库·postgresql·性能优化
喵叔哟10 小时前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
tryCbest10 小时前
Oracle查看存储过程
数据库·oracle
咩咩不吃草10 小时前
【MySQL】表和列、增删改查语句及数据类型约束详解
数据库·mysql·语法