PostgreSQL 中的递归查询 与oracle 的比较
PostgreSQL 中的递归查询,2种方法:
1、用with decursive
WITH RECURSIVE d AS (SELECT d1.id,d1.parent_id,d1.caption FROM course_types d1 where d1.dr = 0 and d1.id='typeId' union ALL SELECT d2.id,d2.parent_id,d2.caption FROM course_types d2, d WHERE d2.dr = 0 and d2.parent_id = d.id) SELECT * FROM d
其中typeId 是初始id
2、用递归函数
CREATE OR REPLACE FUNCTION query_child_dept_auth(character varying, lv1 integer)
RETURNS SETOF w_help_dept AS
$BODY$
DECLARE
itemid ALIAS FOR $1;
itemrecord record;
BEGIN
SELECT s.*,lv1 as lv INTO itemrecord FROM depts s where s.dr = 0 and s.state = 1 and id=itemid order by s.sort,convert_to(s.caption,'gbk');
RETURN NEXT itemrecord;
IF (select count(1) from depts s where s.dr = 0 and s.state = 1 and s.parent_id=itemrecord.id) >0 THEN
for itemrecord in SELECT s.* FROM depts s where s.dr = 0 and s.state = 1 and s.parent_id=itemrecord.id order by s.sort,convert_to(s.caption,'gbk') LOOP
for itemrecord in select * from query_child_dept_auth (itemrecord.id,(lv1+1)) LOOP
RETURN NEXT itemrecord;
end LOOP;
end LOOP;
END IF;
RETURN;
END;$BODY$
LANGUAGE plpgsql VOLATILE
其中w_help_dept是辅助表,表字段和depts一样,且多个lv字段,lv字段用于模拟oracle递归查询中的level树层数
oracle 递归查询
网上资料蛮多,随便找了个http://cpdw.iteye.com/blog/625574
作用:对于查询递归树是个好方法
转载于:https://www.cnblogs.com/xiongjinpeng/archive/2012/05/29/2523780.html
PostgreSQL 中的递归查询 与oracle 的比较相关推荐
- Oracle、Postgresql 中round函数的用法说明
首先我们来说下这个Oracle中的round函数 Oracle round 函数的意思是四舍五入的方法,即传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果,参数 number 是指需要 ...
- postgresql学习_在PostgreSQL中学习这些快速技巧
postgresql学习 PostgreSQL is one of the most popular open source SQL dialects. One of its main advanta ...
- oracle中的递归查询
一.oracle中的递归查询上下级部门关系 采用的语法为 start with ... connect by ..... = prior .... 我们部门表中存在这样几条记录 id parent_i ...
- Postgresql中,计算两个日期月份差值或年月日,实现Oracle中months_between、add_months的效果
Oracle中存在months_between.add_months函数,用作计算年龄等,例如计算某个人的年龄:岁(age)-月(monthss)-天(days) SELECT rowid,a.fid ...
- oracle sql now函数,SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日
练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是 ...
- sql oracle 递归查询语句,oracle递归函数 oracle中SQL递归查询
关于oracle递归调用的自定义函数如何结束 比如存储过程a中有b,b中含a.用return结束判断,执行还是锁表,怎么解决 关于oracle递归调用的自定义函数如何结束 可以调用. C语言最基本的模 ...
- PostgreSQL中的数据库实例、模式、用户(角色)、表空间
2019独角兽企业重金招聘Python工程师标准>>> 本文参考:http://blog.csdn.net/kanon_lgt/article/details/5931522 htt ...
- pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)
与oracle的区别 1.数据类型区别 Oracle PostgresQL 注释 VARCHAR2 VARCHAR(character varying) Long. CLOB TEXT DATE DA ...
- 什么是PostgreSQL?跟MySQL、Oracle比强在哪?
导读:本文主要给大家介绍什么是PostgreSQL数据库.PostgreSQL有哪些强大的功能及其目前的一些应用情况,以便大家对PostgreSQL有一个初步的认识. 作者:唐成 来源:大数据DT(I ...
最新文章
- 苹果和Siri的七年之痒:Siri的落寞之路
- matlab与python通信_python和matlab之间数据传输方法
- 道家遁甲式(又名道家奇门)
- POJ 1184 聪明的打字员
- 使用postman创建Marketing Cloud的Contact
- javascript字典中添加数组_在javascript中合并两个字典数组
- 算法(4)-leetcode-explore-learn-数据结构-数组2
- python信息安全书籍_信息安全从业者书单推荐
- [转载]让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
- Android 开发一定要看的15个实战项目
- Windows 系统:没有远程桌面授权服务器可以提供许可证
- 如何使用python游戏开发模块—pygame?
- Android基于在线地图的轨迹跟踪服务
- ASP.Net MVC开发基础学习笔记(9):查看详情、编辑数据、删除数据
- 19、ADS使用记录之窄带F类功放设计
- flash AS3.0实现进度条与播放暂停按钮的同步
- MySQL三个表的连接查询
- nodejs 结合 wechaty 实现你的微信群聊机器人二(iPad 协议)
- matlab 开4次方根,matlab中计算四次方方程a*x^4+b*x+c=0的实数根.
- html调用手机NFC,NFC门禁模拟-教你用NFC手机模拟门禁卡