设为首页 加入收藏

TOP

ORACLE??查?
2014-11-24 08:09:20 来源: 作者: 【 】 浏览:2
Tags:ORACLE

ORACLE支持常 的用CTE 的方式 查 ,也有自己特有的查 方式,ORACLE文 中叫 次 查 。

通 一 的例子 介 查 方式。

CREATE TABLE TBL_TEST( ID NUMBER,  NAME VARCHAR2(100),  PID NUMBER); 
/

BEGIN
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
END;	
 /

需求:ID = 1 下所有的子 ( 表中 可以看出是1、2、4、5)

ORACLE特有的 查 方式:

SELECT * FROM TBL_Test
START WITH ID = 1           --  始行(start row)
CONNECT BY PRIOR ID = pid;  -- prior代表上一行(parent row)
CTE方式:
WITH cte(ID,NAME,PID) AS
(
    SELECT ID,NAME,PID
    FROM TBL_TEST
    WHERE ID = 1
UNION ALL
    SELECT b.ID,b.NAME,b.PID
    FROM cte a
    INNER JOIN TBL_TEST b ON a.id = b.PID
)
SELECT * FROM cte;
以上 方法均查出了正 的 果。

上面第一 方法的Start With 相 於第二 方法的UNION ALL上面的部分,CONNECT BY 相 於UNION ALL下面的部分。

CTE方法具有可移植性,SQL SERVER和DB2也支持。

於CTE方法 的更多 例, 可以看下面 遍文章:

SQL 查

查 初

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何禁止ORACLE随系统启动 下一篇Oracle中的to_char、to_Data、to_..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)
·国际音标 [ç] (2025-12-26 20:20:31)
·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)