美文网首页
SQL递归查询

SQL递归查询

作者: vygjyfjt | 来源:发表于2019-03-06 22:37 被阅读0次
--创建地区表
CREATE TABLE region(
   id  serial   PRIMARY KEY,    --主键,自增
   rc  varchar(20)  NOT NULL,   --地区code
   pc  varchar(20)  NOT NULL,   --父地区code
   nm  varchar(20)              --名称
); 
------添加测试数据
--0
   |--110000,北京
       |--110100,西城
   |--440000,湖北
       |--440100,武汉
           |--440101,武昌
       |--440200,黄石
           |--440201,黄石港
           |--440202,下陆
-----------------
insert into region(rc,pc,nm) values
    ('110000','0','北京'),
    ('110100','110000','北京-西城'),
    ('440000','0','湖北'),
    ('440100','440000','湖北-武汉'),
    ('440101','440100','湖北-武汉-武昌')
    ('440200','440000','湖北-黄石'),
    ('440201','440200','湖北-黄石-黄石港'),
    ('440202','440200','湖北-黄石-下陆');
  • postgres
    • 设置最大深度为2:
WITH RECURSIVE tmp(id,rc,pc,nm,deep) as
(
    select id,rc,pc,nm,1 as deep from region where id = 3
    union all 
    select t1.id,t1.rc,t1.pc,t1.nm,t2.deep + 1 
        from region t1,tmp t2 
        where t2.deep < 2  --设置最大深度为2
        and t1.pc = t2.rc
)
select * from tmp;
最大深度为2
  • 设置最大深度为3:
WITH RECURSIVE tmp(id,rc,pc,nm,deep) as
(
    select id,rc,pc,nm,1 as deep from region where id = 3
    union all 
    select t1.id,t1.rc,t1.pc,t1.nm,t2.deep + 1 
        from region t1,tmp t2 
        where t2.deep < 3  --设置最大深度为3
        and t1.pc = t2.rc
)
select * from tmp;
最大深度为3

相关文章

  • Java工程师之Oracle技术-SQL入门(6)

    递归查询 递归查询 存在层级关系(树形)关系时,使用SQL语句可以把整个递归树全部查询出来 level 关键字可以...

  • SQL递归查询

    postgres设置最大深度为2: 设置最大深度为3:

  • 【MySQL】递归查询上下级

    环境 需要MySQL8.0+ 上下级关系图 建表语句 查询上下级sql语句 递归,查询本级以及所有下级 递归,查询...

  • [转]SQL Server CTE 递归查询全解

    原文在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expressi...

  • java历程1

    今天第一天参加正式笔试。失败。 递归。 五星数JAVA运算。 JAVA工厂模式。 SQL语句基础语句。 SQL多表查询。

  • SQL 高级查询——(层次化查询,递归)

    SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询。没看到的朋友可以点击下面链接查看。1 ...

  • DNS解析原理:递归 VS 迭代

    DNS 解析分类 DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式...

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • ThinkPHP查询

    查询方式 表达式查询 快捷查询 区间查询 组合查询 统计查询 动态查询 SQL查询 ThikPHP支持原生SQL查...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

网友评论

      本文标题:SQL递归查询

      本文链接:https://www.haomeiwen.com/subject/alefpqtx.html