oracle中 sql語句:start with .. connect by prior.. 用法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

我們經常會將一個比較復雜的目錄樹存儲到一個表中。或者將一些部門存儲到一個表中,而這些部門互相有隸屬關系。這個時候你就會用到connect by prior start with。oracle 提供了start with connect by 語法結構可以實現遞歸查詢。

?

connect by 是結構化查詢中用到的,其基本語法是:

  select ... from tablename start with 條件1

  connect by prior 條件2

  where 條件3;

  例:

  select * from table

  start with org_id = 'HBHqfWGWPy'

  connect by prior org_id = parent_id;

  簡單說來是將一個樹狀結構存儲在一張表里,比如一個表中存在兩個字段:

  org_id,parent_id那么通過表示每一條記錄的parent是誰,就可以形成一個樹狀結構。

  用上述語法的查詢可以取得這棵樹的所有記錄。

  其中:

  條件1 是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。

  條件2 是連接條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR org_id = parent_id就是說上一條記錄的org_id 是本條記錄的parent_id,即本記錄的父親是上一條記錄。

  條件3 是過濾條件,用于對返回的所有記錄進行過濾。

?

例如:

沒有加中start with ... connect by prior ...的查詢結果:

select t.dim_id, t.pid, level

from pmcode.pmcode_fj_tree_rl t

where t.dim_id in (select b.dim_id

? ? ? ? ? ? ? ? ? ? ? from pmcode.PMCODE_KPI_DIM_OD b

? ? ? ? ? ? ? ? ? ? ?where b.kpi_id = 'KC0011')

結果:

DIM_ID PID LEVEL

---------------------

1024 5003 0

1070 0 0

5003 1070 0

5006 0 0

------------------------------------------------------------------------------------

增加start with ... connect by prior ...以后的結果:

select t.dim_id, t.pid, level

from pmcode.pmcode_fj_tree_rl t

where t.dim_id in (select b.dim_id

? ? ? ? ? ? ? ? ? ? ? from pmcode.PMCODE_KPI_DIM_OD b

? ? ? ? ? ? ? ? ? ? ?where b.kpi_id = 'KC0011')

start with t.dim_id = '1070' ----表示從dim_id = '1070'開始(也就是說1070為根節點)

connect by prior t.dim_id = t.pid; ----表示上條記錄的dim_id等于本條記錄的pid

結果:

DIM_ID PID LEVEL

---------------------

1070 0 1

5003 1070 2

1024 5003 3

?

又如:

?

1. 一個簡單舉例:
SQL> select *??from test;

BILL_MONTH???????????DAY_NUMBER MSISDN
-------------------- ---------- --------------------
200803????????????????????????1 13800
200803????????????????????????3 13800
200803????????????????????????2 13800
200803????????????????????????2 13801
200803????????????????????????4 13804
200803????????????????????????5 13804
200803????????????????????????7 13804
200803????????????????????????8 13804
200803????????????????????????6 13802
200803????????????????????????6 13801
200803????????????????????????7 13801
200803????????????????????????8 13801

12 rows selected

SQL>
SQL> select * from test
??2???????start with day_number=1
??3???????connect by??prior day_number=day_number-1 and prior msisdn= msisdn
??4??????;

BILL_MONTH???????????DAY_NUMBER MSISDN
-------------------- ---------- --------------------
200803????????????????????????1 13800
200803????????????????????????2 13800
200803????????????????????????3 13800

SQL>


上面的語句查找出了從1開始,并且day_number 逐漸+1 遞增的,并且 msisdn 相同的哪些個數據.


2. start with??connect by 語法結構
?如上面說看到的 例子, 其語法結構為??start with condition??connect by??condition (含 prior 關鍵字)
start with conditon 給出的seed 數據的范圍, connect by??后面給出了遞歸查詢的條件,prior 關鍵字表示父數據,prior 條件表示子數據需要滿足父數據的什么條件。

在下面的這個start with connect by 結構中,就表示 查找出了從1開始,父數據的day_number等于子數據的day_number-1而且父數據的msisdn=子數據的msisdn.

start with day_number=1
?????connect by??prior day_number=day_number-1 and prior msisdn= msisdn

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452120.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452120.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多重繼承和單重繼承

多重繼承(Multiple Inheritance, MI)指的是一個類別可以同時從多于一個父類繼承行為與特征的功能。與單一繼承相對,單一繼承指一個類別只可以繼承自一個父類。

3分鐘學會SVN:SVN快速上手

選擇SVN客戶端 Windows平臺 TortoiseSVN:也叫烏龜SVN,Windows上最流行的SVN客戶端,安裝后你的右鍵就會多了幾個SVN相關的菜單,非常方便Eclipse插件:在Eclipse中集成SVN插件,適合使用Eclipse開發的用戶&…

flask框架(三):flask配置文件

flask中的配置文件是一個flask.config.Config對象(繼承字典),默認配置為:{DEBUG: get_debug_flag(defaultFalse), 是否開啟Debug模式TESTING: False, …

C語言可變參數全解

cstdarg(stdarg.h)可變參數的處理 這個頭文件定義了一些宏,可以通過這些宏來逐個訪問被調函數的沒有名字的參數列表,這些參數的個數 和類型都是不知道的。 一個函數可以通過包含一個逗號和三個點(,...)接收可變數量的額外參數,而不需…

Diango博客--23.單元測試:測試 blog 應用

文章目錄1. 前言2. 搭建測試環境3. 測試模型4. 測試視圖5. 測試模板標簽6. 測試輔助方法和類1. 前言 我們博客功能越來越來完善了,但這也帶來了一個問題,我們不敢輕易地修改已有功能的代碼了! 我們怎么知道代碼修改后帶來了預期的效果&…

一般與特殊結構關系 整體與部分結構關系

一般與特殊結構關系又稱為分類結構關系,是“is a”關系。 例如:飛機與交通工具都是類,飛機是一種特殊的交通工具。他們之間是“is a”關系。 上層類體現一般性和共性,下層類體現特殊性和具體性。 用這種結構關系來描述現實世界…

簡單版:帶干擾線的圖形驗證碼生成

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1.生成工具類; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; im…

圖片格式轉換工具與方法

2019獨角獸企業重金招聘Python工程師標準>>> 使用ffmpeg進行格式轉換 1.jpg 轉 I420 ffmpeg -i 001.jpg -pix_fmt yuv420p 001_I420_fromJPG.yuv 2.png 轉 I420 ffmpeg -i 222.png -pix_fmt yuv420p 222_I420_fromPNG.yuv 3.bmp 轉 I420 ffmpeg -i xxx.bmp -pix_fmt…

Diango博客--24.單元測試:測試評論應用

文章目錄1. 前言2. 數據基類3.測試 Comment Model4. 測試視圖函數5. 測試模板標簽1. 前言 comments應用的測試和blog應用測試的套路是一樣的。 先來建立測試文件的目錄結構。首先在 comments 應用的目錄下建立一個名為 tests 的 Python 包,然后刪除 comments 應用…

面向對象設計使用語言選擇

面向對象設計的結果既可以用面向對象語言、也可以用非面向對象語言實現。 使用面向對象語言時,由于語言本身充分支持面向對象概念的實現,因此,編譯程序可以自動把面向對象概念映射到目標程序中。 使用非面向對象語言編寫面向對象程序&#xf…

結合shiro 的圖形驗證碼生成

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 在做用戶登錄功能時,很多時候都需要驗證碼支持,驗證碼的目的是為了防止機器人模擬真實用戶登錄而惡意訪問&#…

利用C語言實現計算機圖像處理的方法

1.圖像平移 圖像平移只是改變圖像在屏幕上的位置,圖像本身并不發生變化。假設原圖像區域左上角坐標為(x0, y0),右下角坐標為(x1, y1),將圖像分別沿x和y軸平移dx和dy,則新圖像的左上角坐標為(x0 + dx, y0 &a…

E24- please install the following Perl modules before executing ./mysql_install_db

2019獨角獸企業重金招聘Python工程師標準>>> [roott-cet7 scripts]# ./mysql_install_db --basedir/usr/local/mysql/ --datadir/app/data/ --usermysql FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db: Data::Dumpe…

SpringMVC異常報406 (Not Acceptable)的解決辦法

使用SpsringMVC&#xff0c;使用restEasy調試&#xff0c;controller請求設置如下&#xff1a; Java代碼 RequestMapping(value"/list",methodRequestMethod.GET,producesMediaType.APPLICATION_JSON_VALUE) ResponseBody public List<EditTimeout> list()…

Diango博客--25.使用Coverage統計測試覆蓋率

文章目錄1. 前言2. 安裝 Coverage3. 簡單配置 Coverage4. 運行 Coverage5. 完善 Coverage 配置6. 生成 HTML 報告7. 完善單元測試1. 前言 我們完成了對 blog 應用和 comment 應用這兩個核心 app 的測試。現在我們想知道的是究竟測試效果怎么樣呢&#xff1f;測試充分嗎&#x…

面向對象語言的優點

1.一致的表達方法 從前面章節的講述中可以知道&#xff0c;面向對象開發基于不隨時間變化的、一致的表示方法。這種表示方法應該從問題域到OOA&#xff0c;從OOA到OOD&#xff0c;最后從OOD到面向對象編程(OOP)&#xff0c;始終穩定不變。 一致的表示方法&#xff1a; 既有利…

最好的英文詞典

辭典對于學外語的作用&#xff0c;怎么強調也不過分。經常接觸英語的人都知道&#xff0c;遇到生詞不可怕&#xff0c;可怕的是遇到認識的單詞&#xff0c;又不明白這句話什么意思。這個時候&#xff0c;辭典的作用就發揮出來了。 今天一位朋友問我一句英文的意思&#xff0c;…

oracle用戶創建及權限設置

權限&#xff1a; create session create table unlimited tablespace connect resource dba 例&#xff1a; #sqlplus /nolog SQL> conn / as sysdba; SQL>create user username identified by password SQL> grant dba to username; SQL> conn username/password…

Android動畫之逐幀動畫(FrameAnimation)詳解

今天我們就來學習逐幀動畫,廢話少說直接上效果圖如下: 幀動畫的實現方式有兩種&#xff1a; 一、在res/drawable文件夾下新建animation-list的XML實現幀動畫 1、首先在res/drawable文件夾下添加img00-img24共25張圖片 2、新建frame_anim.xml [html] view plaincopy <?xml v…

ajax-簡單參數方法實現陰影效果

注&#xff1a; 簡單參數 &#xff08;按照參數的數量和位置傳遞參數&#xff09; 使用時按照位置、數量傳遞 shadow.js函數//簡單參數實現方式/** slices:陰影* opacity:透明度* zIndex:層級* */jQuery.fn.shadow_simple function (slices,opacity,zIndex) { //獲取到每個…