2017-02-12 21 views
-2

我知道使用水平與層次查詢一起,但我無法理解如何分析這樣的:選擇逐級連接<= 4它是如何工作的內部

(select level from dual connect by level<=4) 

查詢內部工作原理,以及它如何正在生成數字。

對於生成的數字我有另一種方式是:

select r from (select rownum r from all_objects) e where r<=10 

就會產生第一個10個號碼。但我無法理解內部層面是如何工作的。

請解釋原因!

回答

0

這構建了一個分層查詢。 connect by定義瞭如何從父節點走到它的子節點及其子節點的子節點。在這種情況下,您的連接定義僅在level >= 4。這裏的技巧是level是僞列,如rownum,所以條件只能通過提供的小於等於的數字(在這種情況下爲4)來滿足。你也可以用ROWNUM做到這一點:

select level from dual connect by rownum <= 4; 

Level是用來計數的連接的深度,所以家長會是1個孩子2,孩子3個孩子,等於是想起來了一個用於分層查詢的rownum。