postpreSQL和oracle数据库的递归
oracle:
--包含自身
select *
from sec_org
start with org_id ='9767FA56D52680AEE043C0A8670580AE' --开始节点
connect by prior org_id = parent_org_id --父子关系
--不包含自身
select *
from sec_org
start with parent_org_id ='9767FA56D52680AEE043C0A8670580AE' --开始节点
connect by prior org_id = parent_org_id --父子关系
在实际中,可能需要对数据进行过滤,但是在递归查询中,不能进行过滤,可以先对数据进行过滤,使用过滤的数据进行递归
select *
from (select * from sec_org where status = 'enable')
start with org_id = '9767FA56D52680AEE043C0A8670580AE' --开始节点
connect by prior org_id = parent_org_id --父子关系
postpreSQL
--包含自身
WITH RECURSIVE cte AS (
SELECT
*
FROM
sec_org
WHERE
org_id = '9767FA56D52680AEE043C0A8670580AE'
AND status = 'enable'
UNION
SELECT
o.*
FROM
sec_org o
INNER JOIN cte ON o.parent_org_id = cte.org_id
WHERE
o.status = 'enable'
) SELECT
*
FROM
cte
--不包含自身
WITH RECURSIVE cte AS (
SELECT
*
FROM
sec_org
WHERE
org_id = '9767FA56D52680AEE043C0A8670580AE'
AND status = 'enable'
UNION
SELECT
o.*
FROM
sec_org o
INNER JOIN cte ON o.parent_org_id = cte.org_id
WHERE
o.status = 'enable'
) SELECT
*
FROM
cte
WHERE cte.org_id!='9767FA56D52680AEE043C0A8670580AE'
1.首先执行 SELECT * FROM sec_org WHERE org_id = '9767FA56D52680AEE043C0A8670580AE' AND status = 'enable'
2.执行外层的的select * from cte,此时有一条记录
3.执行union后面的语句
4.若3查询出数据,则重复2,3,一直递归,直至3查询的数据为
postpreSQL和oracle数据库的递归的更多相关文章
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- 细说Oracle数据库与操作系统存储管理二三事
在上大学的时候,学习操作系统感觉特别枯燥,都是些条条框框的知识点,感觉和实际应用的关联不大.发现越是工作以后,在工作中越想深入了解,发现操作系统知识越发重要.在实践中结合理论还是不错的一种学习方法.自 ...
- ORACLE数据库管理员的职责
ORACLE数据库管理员的职责 一.概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情 ...
- Oracle 数据库逻辑结构
注:本文来源于 <腾科OCP培训课堂>.非准许商业活动. Oracle 数据库逻辑结构 一.存储关系 Oracle 数据库逻辑上是由一个或多个表空间组成的,表空间物理上是由一个或多个数据 ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- Oracle数据库导入导出简单备份
oracle数据库简单备份 方法一: 1.导出 exp c##xmq/pwda@orcl owner=c##xmq file=C:/expdb.dmp buffer=8000 2.导入 2.1.删除原 ...
- ORACLE数据库实现自增的两种方式
Mysql数据库因为其有自动+1,故一般我们不需要花费太多时间,直接用关键字auto_increment即可,但是Oracle不行,它没有自动增长机制.顾我们需要自己去实现.一般有两种方式,但是这两种 ...
- python链接oracle数据库以及数据库的增删改查实例
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
- C#.NET ORM FreeSql 读取使用 US7ASCII 的 Oracle 数据库中文显示乱码问题
前言 关于 Oracle US7ASCII 中文乱码的问题,Ado.Net 和 Odbc 无法解决.包括最新的.Net Core..NET6..NET7 都无法解决这个问题. FreeSql 对 Or ...
随机推荐
- sql 同一张表查询不同数据合并之后关联查询
SELECT t.articleId articleId, comments.`comments` parentComment, t.commentId commentsId, comments.`i ...
- mysql数据库学习
1,服务端和客户端 MySQL 包括服务端和客户端,服务端是MySQL server,客户端包括命令行客户端和图形用户客户端: 命令行客户端:mysql,mysqladmin,mysqldump ( ...
- Java面试题整理(转载)
转载地址:https://blog.csdn.net/matry521/article/details/52210139
- 11 MySQL之性能优化
01-优化简介 MySQL数据库优化是多方面的,原则是减少系统瓶颈,减少资源的占用,增加系统的反应速度. 1.通过优化文件系统,提高磁盘I\O的速写速度: 2.通过优化操作系统的调度策略,提高MySQ ...
- flutter AnimatedPositioned
Positioned 的动画版. 只有是 Stack 的 child 时才能工作. 如果 child 的 size 在动画过程会改变,则 AnimatedPositioned 是很好的选择 doubl ...
- RabbitMQ学习之:(七)Fanout Exchange (转贴+我的评论)
From:http://lostechies.com/derekgreer/2012/05/16/rabbitmq-for-windows-fanout-exchanges/ PunCha: Ther ...
- 利用Spring的AbstractRoutingDataSource解决多数据源的问题【代码手动切换,非AOP】
转: 利用Spring的AbstractRoutingDataSource解决多数据源的问题 多数据源问题很常见,例如读写分离数据库配置. 原来的项目出现了新需求,局方要求新增某服务器用以提供某代码, ...
- linux编译gpu_flow
因为需要做双流,论文里面推荐到这个GPU版本的TVL1算法,于是开始编译. 一.下载源码 git clone https://github.com/feichtenhofer/gpu_flow.git ...
- 启动nfs清除端口占用过程
centos7起nfs服务. 按教程执行: vim /etc/exportsyum install -y nfs-utils systemctl enable rpcbind.service syst ...
- 修改主机名(/etc/hostname和/etc/hosts区别)
ubuntu永久修改主机名 1.查看主机名 在Ubuntu系统中,快速查看主机名有多种方法:其一,打开一个GNOME终端窗口,在命令提示符中可以看到主机名,主机名通常位于“@”符号后:其二,在终端窗口 ...