首页 > 数据库技术 > 详细

DB2(WITH AS)SQL递归查询

时间:2014-01-16 20:34:42      阅读:409      评论:0      收藏:0      [点我收藏+]

由于业务涉及到复杂的查询,需要多处引用查询过的一个结果集,而在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

 

示例二(多次递归)

bubuko.com,布布扣
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
bubuko.com,布布扣

DB2(WITH AS)SQL递归查询

原文:http://www.cnblogs.com/javalism/p/3518494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!