DB2(WITH AS)SQL遞歸查詢


作者博客地址更換至CSDN,地址:http://blog.csdn.net/littlebrain4solving

 

由於業務涉及到復雜的查詢,需要多處引用查詢過的一個結果集,而在DB2里面不支持使用變量作為中間存儲(直接存儲這個結果集),這個時候需要使用到DB2特定的一種方式(WITH AS).

(注:存儲過程里面不支持這種用法,本人親測.)

 

以下是標准的用法形式:

WITH [結果名](字段名...) AS (

  [SELECT 字段名 FROM .....]

)SELECT * FROM [結果名] 

 

 

示例一(單次遞歸):

WITH T1(NAME,AGE) AS(
    --把年齡大於18的人全部取出.
    SELECT NAME,AGE FROM PERSON WHERE AGE > 18
)
SELECT * FROM T1

 

示例二(多次遞歸)

WITH T1(NAME,AGE) AS(
    --把年齡大於18的人全部取出.
    SELECT NAME,AGE FROM PERSON WHERE AGE > 18
),T2(NAME,AGE)AS(
    --由於我們知道T1只有2個字段,所以可以直接使用*.
    SELECT * FROM T1 WHERE NAME NOT IN (SELECT NAME FROM T1 WHERE NAME = '張三')
)
SELECT * FROM T2

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM