作者博客地址更換至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
