oracle和postgresql 递归查询父子关系记录语法区别
2024-10-19 00:21:07
oracle:
一、数据
db数据字段如下:
task_id task_name t.parent_task_id ***
*** *** *** ***
000001 t1 *** ***
000002 t11 000001 ***
000005 t12 000001 ***
000003 t111 000002 ***
000004 t1111 000003 ***
000006 t121 000005 ***
000007 t1211 000006 ***
*** *** *** ***
二、格式
Select * from …. Where [结果过滤条件语句]
Start with [and起始条件过滤语句]
Connect by prior [and中间记录过滤条件语句]
三、查找所有下级
select * from tablename start with id=1 connect by prior id=pid
注意:此sql能查找id=1的数据的所有下级,写sql语句时要注意,因为是从id开始查找下级,所以connect by prior 子句的条件是 id=pid
四、查找所有上级
select * from tablename start with id=5 connect by prior pid=id
因为是从id开始查找上级,所以connect by prior 子句的条件是pid=d
select t.task_id ,t.task_name ,t.parent_task_id
from t_task t
start with task_id=''
connect by prior task_id = parent_task_id;
五、显示结果
结果显示:
task_id task_name t.parent_task_id
000001 t1
000002 t11 000001
000003 t111 000002
000004 t1111 000003
000005 t12 000001
000006 t121 000005
000007 t1211 000006
postgresql:
查询父节点下所有的子节点
WITH recursive fileinfo
(pk_fi_id,
f_fi_parentid)
AS
(
SELECT
pk_fi_id ,
f_fi_parentid
FROM
t_fileinfo
WHERE
pk_fi_id = '92719f78-22d6-4db1-a484-dff34de76890'
UNION ALL
SELECT
mm.pk_fi_id ,
mm.f_fi_parentid
FROM
t_fileinfo AS mm
INNER JOIN fileinfo AS child ON mm.f_fi_parentid = child.pk_fi_id
)
SELECT
*
FROM fileinfo
最新文章
- Linux系统管理员面试50题
- HDU 1023 Traning Problem (2) 高精度卡特兰数
- 0x01第一个汇编程序
- BW性能优化
- CentOS 6下安装nodejs 0.9.0
- VIM+qmake编译示例程序HelloQt出错问题的解决(文件名一定要使用.cpp,否则就会默认使用gcc编译,当然通不过)
- A Game of Thrones(13) - Tyrion
- apache 修改连接数(转)
- bzoj 3930: [CQOI2015]选数
- redux+saga+reducer
- 20172310 2017-2018-2 《程序设计与数据结构》实验三报告(敏捷开发与XP实践)
- python之装饰器(函数)
- Linux 内存文件系统
- 10.9 Xadmin
- CentOS下如何根据Dump文件分析线上问题
- ";ERR unknown command 'cluster'";
- go语言练习:文件哈希
- jquery实现显示textarea输入字符数
- day40 数据结构-算法(二)
- Markdown安装与简单使用
热门文章
- 不可或缺 Windows Native (15) - C++: 命名空间
- Delphi 10.1 Berlin UTF8String Test
- 点我吧工作总结(技术篇) Cobar原理和环境搭建
- 创业小坑:内网域名 在windows下能nslookup,但ping不通,也无法访问。而在linux下正常。
- Date类型 方法
- React入门--------顶层API
- Oracle EXP-00091的解决方法
- 内网渗透测试思路-FREEBUF
- Maltego实体分类与Transform
- SQLite Design and Concepts