自学内容网 自学内容网

SQL递归查询树结构语法

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

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

mysql

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

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;

原文地址:https://blog.csdn.net/buzhimingyue/article/details/143945946

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!