-- 构建递归结构的表(数据是虚构的)
drop table t;
create table t
(
  id int, name varchar(6), pid int
);
insert into t
select 1,'安徽',0 union all
select 2,'安庆',1 union all
select 3,'安庆市',2 union all
select 4,'怀宁县',2 union all
select 5,'潜山县',2 union all
select 6,'宿松县',2 union all
select 7,'太湖县',3 union all
select 8,'桐城市',3 union all
select 9,'望江县',4 union all
select 10,'岳西县',4 union all
select 11,'枞阳县',2
;

-- 递归查询某个节点的所有父节点
;with cte as
(
select * from t where id=11
union all
select t.* from t,cte where t.id=cte.pid
)
select * from cte order by id;

-- 递归查询整个树
;with cte(id, name, pid, lvl) as
(
 select t.*, 0 lvl from t where pid=0
 union all
 select t.*, cte.lvl+1 lvl from t, cte where t.pid = cte.id
)
select
  case
    when lvl=0 then name
    else REPLICATE(' ', lvl) + '└' + name
  end,
  id,
  pid
from cte
;

但是,这个结果排序是有问题的,如太湖县应该挂在安庆县下面。如果解决这个问题?请不啻指教

转载于:https://www.cnblogs.com/surfsky/archive/2012/11/20/2778719.html

sqlserver 递归查询相关推荐

  1. SQL递归查询知多少

    最近工作中遇到了一个问题,需要根据保存的流程数据,构建流程图.数据库中保存的流程数据是树形结构的,表结构及数据如下图: 仔细观察表结构,会发现其树形结构的特点: FFIRSTNODE:标记是否为根节点 ...

  2. SqlServer中递归查询父节点及其所属子节点

    SqlServer中递归查询父节点及其所属子节点 需求场景 SQL脚本实现-根据子节点查询所有的父节点 查询结果 SQL脚本实现-根据父节点查询所有的子节点 查询结果 需求场景 递归查询父节点及其所属 ...

  3. SQLServer学习-- SQLServer

    SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行M ...

  4. SQLServer学习笔记系列6

    一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能 ...

  5. Sql语句里的递归查询

    Sql语句里的递归查询 SqlServer2005和Oracle 两个版本 以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询 举例说明:Sq ...

  6. sqlserver迁移到mysql遇到的那些坑

    背景 由于各种原因,成本啊.扩展性等,公司决定把线上的业务从sql server迁移到mysql RDS. 迁移过程主要包括了程序修改和数据库的迁移.程序修改我们略过不谈,我们重点关注数据库迁移. 大 ...

  7. mysql8.0递归_mysql8.0版本递归查询

    1.先在mysql数据库添加数据 DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept`  ( `id` int(11) NOT NULL, `pid` in ...

  8. sql oracle 递归查询语句,深入sql oracle递归查询

    ☆ 获取数据库所有表名,表的所有列名 select name from sysobjects where xtype='u' select name from syscolumns where id= ...

  9. java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法

    SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE ...

最新文章

  1. Java进程占用内存过高,排查解决方法
  2. SQLite相关知识
  3. SPOJ - DISUBSTR Distinct Substrings(后缀数组)
  4. bootstrap网格系统_如何使用Bootstrap网格系统?
  5. upper_bound()与lower_bound()
  6. minio 并发数_开源数据存储项目Minio:提供非结构化数据储存服务
  7. 如何在 CentOS 中设置 NTP 服务器
  8. 一个女孩写的经典程序
  9. 40岁了,突然公司黄了,怎么办?
  10. java.rmi.ConnectException: Connection refused to host:
  11. SDN、NFV:一枝独秀不是春
  12. 诺基亚Nokia的PC套件导出短信乱码问题解决(转)
  13. 利用google map 查询全国城市坐标
  14. 元数据看板的初步设计思路
  15. 基于stm32这种单片机将变量定义到绝对地址中
  16. 冲水步骤(智能马桶开发记录)
  17. 疫情家庭常见消毒剂:次氯酸、次氯酸钠、酒精、对间氯二甲苯酚 、西吡氯铵、 二氧化氯;消炎药与抗生素
  18. 社区说|浅谈量子计算机和 Cirq
  19. RuntimeError: __iter__() is only supported inside of tf.function or when eager execution is enabled.
  20. 基于Spring Boot的医疗设备管理系统【源码分享】

热门文章

  1. 贝叶斯分层回归模型的推理、EM求解和Java编程
  2. MapDB的使用实战[基于Java的数据库]
  3. Spring JDBC开发
  4. 大容量存储方案_基因行业容器存储解决方案
  5. java怎样生成32位全是整形的主键_用java生成32位全球唯一的id编号
  6. 服务器证书在注册表上位置,服务器ssl证书注册表
  7. linux没有pigz指令,Linux命令手册
  8. html 只能输入正数,vue 限制input只能输入正数
  9. t分布表精确完整图_如何快速绘制临床论文基线特征表
  10. set column oracle,Oracle 用一个表字段更新另一个表字段三种方法