日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)OceanBase教程:OceanBase 層次查詢

層次查詢(Hierarchical Query)是一種具有特殊功能的查詢語句,通過它能夠?qū)⒎謱訑?shù)據(jù)按照層次關(guān)系展示出來。分層數(shù)據(jù)是指關(guān)系表中的數(shù)據(jù)之間具有層次關(guān)系。這種關(guān)系在現(xiàn)實生活中十分常見,例如:

成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)公司已向上1000家企業(yè)提供了,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。

  • 組織架構(gòu)中組長和組員之間的關(guān)系。

  • 企業(yè)中上下級部門之間的關(guān)系。

  • Web 網(wǎng)頁中,頁面跳轉(zhuǎn)的關(guān)系。

語法


SELECT [level], column, expr... FROM table [WHERE condition] [ START WITH start_expression ]
CONNECT BY [NOCYCLE] { PRIOR child_expr = parent_expr | parent_expr = PRIOR child_expr }
[ ORDER SIBLINGS BY …] [ GROUP BY … ] [ HAVING … ] [ ORDER BY … ]

參數(shù)

LEVEL

節(jié)點的層次,是偽列,表示等級。由查詢的起點開始算起為 1,依次類推。

condition

條件。

CONNECT BY

指明如何來確定父子關(guān)系,這里通常使用等值表達式,但其他表達式同樣支持。

START WITH

指明層次查詢中的根行(Root row)。

PRIOR 運算符

NOCYCLE

當指定該關(guān)鍵字時,即使返回結(jié)果中有循環(huán)仍舊可以返回,并可以通過 CONNECT_BY_ISCYCLE 虛擬列來指明哪里出現(xiàn)循環(huán);否則,出現(xiàn)循環(huán)會給客戶端報錯。

ORDER SIBLINGS BY

指定同一個層級行之間的排列順序。

參數(shù)

說明

CONNECT_BY_ISLEAF

當前數(shù)據(jù)行是否是層次關(guān)系中的葉子節(jié)點,是偽列,0表示不是,1表示是。

CONNECT_BY_ISCYCLE

當前數(shù)據(jù)行是否在循環(huán)中,是偽列,0表示不是,1表示是。

CONNECT_BY_ROOT運算符

CONNECT_BY_ROOT是一元運算符,表示參數(shù)中的列來自于層次查詢的根節(jié)點,與一元的 + 和 - 具有相同的優(yōu)先級。

PRIOR 是一元運算符,表示參數(shù)中的列來自于父行(Parent row),與一元的 + 和 - 具有相同的優(yōu)先級。

執(zhí)行流程

使用和實現(xiàn)層次查詢最關(guān)鍵是要理解其執(zhí)行流程,層次查詢執(zhí)行流程:

  1. 執(zhí)行 FROM 后面的 SCAN 或 JOIN 操作;

  2. 根據(jù) START WITH 和 CONNECT BY 的內(nèi)容生成層次關(guān)系結(jié)果;

  3. 按照常規(guī)查詢執(zhí)行流程執(zhí)行剩下的子句(例如 WHERE、GROUP、ORDER BY......)對于 2 中生成層次關(guān)系的流程可以理解為:

  4. 根據(jù) START WITH 中的表達式得到根行(Root rows)。

  5. 根據(jù) CONNECT BY 中的表達式 選擇每個根行(Root rows)的子行(Child rows)。

  6. 將 2 中生成的子行(Child rows)作為新的根行(Root rows)進一步生成子行(Child rows),周而復(fù)始直到?jīng)]有新行生成。

示例

展示層次查詢的使用,向表 emp中的 emp_id、position 和 mgr_id 列插入數(shù)據(jù)。執(zhí)行以下語句:


CREATE TABLE emp(emp_id INT,position VARCHAR(50),mgr_id INT);
INSERT INTO emp VALUES (1,'全球經(jīng)理',NULL);
INSERT INTO emp VALUES (2,'歐洲區(qū)經(jīng)理',1);
INSERT INTO emp VALUES (3,'亞太區(qū)經(jīng)理',1);
INSERT INTO emp VALUES (4,'美洲區(qū)經(jīng)理',1);
INSERT INTO emp VALUES (5,'意大利區(qū)經(jīng)理',2);
INSERT INTO emp VALUES (6,'法國區(qū)經(jīng)理',2);
INSERT INTO emp VALUES (7,'中國區(qū)經(jīng)理',3);
INSERT INTO emp VALUES (8,'韓國區(qū)經(jīng)理',3);
INSERT INTO emp VALUES (9,'日本區(qū)經(jīng)理',3);
INSERT INTO emp VALUES (10,'美國區(qū)經(jīng)理',4);
INSERT INTO emp VALUES (11,'加拿大區(qū)經(jīng)理',4);
INSERT INTO emp VALUES (12,'北京區(qū)經(jīng)理',7);

通過上面的內(nèi)容可以看見列 position 具有清晰的層次關(guān)系。樹狀結(jié)構(gòu)如下:

是按照層次結(jié)構(gòu)將結(jié)果展示出來,執(zhí)行以下語句:


SELECT emp_id, mgr_id, position, level FROM emp
START WITH mgr_id IS NULL CONNECT BY PRIOR emp_id = mgr_id;

查詢結(jié)果如下:


+--------+--------+-------------------+-------+
| EMP_ID | MGR_ID | POSITION          | LEVEL |
+--------+--------+-------------------+-------+
|      1 |    NULL| 全球經(jīng)理           |     1 |
|      2 |      1 | 歐洲區(qū)經(jīng)理         |     2 |
|      5 |      2 | 意大利區(qū)經(jīng)理       |     3 |
|      6 |      2 | 法國區(qū)經(jīng)理         |     3 |
|      3 |      1 | 亞太區(qū)經(jīng)理         |     2 |
|      7 |      3 | 中國區(qū)經(jīng)理         |     3 |
|     12 |      7 | 北京區(qū)經(jīng)理         |     4 |
|      8 |      3 | 韓國區(qū)經(jīng)理         |     3 |
|      9 |      3 | 日本區(qū)經(jīng)理         |     3 |
|      4 |      1 | 美洲區(qū)經(jīng)理         |     2 |
|     10 |      4 | 美國區(qū)經(jīng)理         |     3 |
|     11 |      4 | 加拿大區(qū)經(jīng)理       |     3 |
+--------+--------+-------------------+-------+

如果僅查詢“亞太區(qū)”的層次結(jié)構(gòu),執(zhí)行以下語句:


SELECT emp_id, mgr_id, position, level FROM emp START WITH position = '亞太區(qū)經(jīng)理' CONNECT BY PRIOR emp_id = mgr_id;

查詢結(jié)果如下:


+--------+--------+----------------+-------+
| EMP_ID | MGR_ID | POSITION       | LEVEL |
+--------+--------+----------------+-------+
|      3 |      1 | 亞太區(qū)經(jīng)理      |     1 |
|      7 |      3 | 中國區(qū)經(jīng)理      |     2 |
|     12 |      7 | 北京區(qū)經(jīng)理      |     3 |
|      8 |      3 | 韓國區(qū)經(jīng)理      |     2 |
|      9 |      3 | 日本區(qū)經(jīng)理      |     2 |
+--------+--------+----------------+-------+

分享標題:創(chuàng)新互聯(lián)OceanBase教程:OceanBase 層次查詢
當前網(wǎng)址:http://www.5511xx.com/article/ccocjcc.html