oracle递归、合并、遍历查询实例

    <select id="query_top_structure_bySectionId" resultMap="BaseResultMap">

        select distinct *
        from FP_00000021( where--也可以有where子句作为约束条件)
        start with SPARE_PARTS_SN in
        < foreach collection="sectionIds" item="sectionId" index="index"
            open="(" close=")" separator=",">
            #{sectionId}   (此处传进一个以逗号为分割符的字符串,分割出来的元素放到集合sections中进行遍历,作为SPARE_PARTS_SN的值)
         </foreach>
         connect by prior SPARE_PARTS_SN = PARENT_SN
         UNION   
        select distinct *
        from FP_00000021
        start with SPARE_PARTS_SN in
        <foreach collection="sectionIds" item="sectionId" index="index"
            open="(" close=")" separator=",">
            #{sectionId}
        </foreach>
        connect by prior PARENT_SN = SPARE_PARTS_SN

    </select>


 UNION 命令:合并两个或多个select的结果集

列出所有在中国和美国的不同的雇员名:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

结果

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill
注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令 只会选取不同的值
UNION ALL
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令 会列出所有的值
SQL Statement 1 UNION ALL SQL Statement 2


递归删除:
<delete id="deleteClassifyById" parameterType="java.lang.Short" >
     delete from APP_PKG_CLASSIFY t1 where id in
         ( select id from APP_PKG_CLASSIFY t start with t.ID = #{id,jdbcType=DECIMAL}  connect by prior t.ID =  t.PARENT_ID)
  </delete>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值