oracle start with语句,Oracle START WITH子句不返回根行

我在Oracle 10g中执行以下查询以分层形式检索数据(完整查询有点复杂):

SELECT LEVEL AS lvl, a.*

FROM (

WITH temp

AS (...)

SELECT id_request, subj_type, id_subj, name, flag_e,

person_code, assoc_type, nature, parent

FROM temp,

(...)

) a

START WITH a.parent IS NULL

CONNECT BY PRIOR a.id_subj = a.parent;

这是内部选择返回的集合:

ID_REQUEST SUBJ_TYPE ID_SUBJ NAME FLAG_E PERSON_CODE ASSOC_TYPE NATURE PARENT

91948 F 4A4BE76C44D4003CE0530AA000A6003C John Smith 0 xxxyyy123456zzzzz Declarant F NULL

91948 C 4A4BE76C44D6003CE0530AA000A6003C Rose Anderson 0 kkkkkk654321qqqqq NULL F 4A4BE76C44D4003CE0530AA000A6003C

如果我运行整个查询 without START WITH子句我正确得到以下结果:

LVL ID_REQUEST SUBJ_TYPE ID_SUBJ NAME FLAG_E PERSON_CODE ASSOC_TYPE NATURE PARENT

1 91948 C 4A4BE76C44D6003CE0530AA000A6003C Rose Anderson 0 kkkkkk654321qqqqq NULL F 4A4BE76C44D4003CE0530AA000A6003C

1 91948 F 4A4BE76C44D4003CE0530AA000A6003C John Smith 0 xxxyyy123456zzzzz Declarant F NULL

2 91948 C 4A4BE76C44D6003CE0530AA000A6003C Rose Anderson 0 kkkkkk654321qqqqq NULL F 4A4BE76C44D4003CE0530AA000A6003C

但是,如果我运行它,那么START FOR子句中的查询将返回没有行,而我期望2行:

LVL ID_REQUEST SUBJ_TYPE ID_SUBJ NAME FLAG_E PERSON_CODE ASSOC_TYPE NATURE PARENT

1 91948 F 4A4BE76C44D4003CE0530AA000A6003C John Smith 0 xxxyyy123456zzzzz Declarant F NULL

2 91948 C 4A4BE76C44D6003CE0530AA000A6003C Rose Anderson 0 kkkkkk654321qqqqq NULL F 4A4BE76C44D4003CE0530AA000A6003C

最奇怪的事情是:

问题仅在某些情况下发生,而查询适用于大多数情况,而数据值方面没有很大差异;

如果我用内部选择的结果集创建一个表,即使使用START WITH子句,相同的查询也能正常工作 .

这是使用创建的表的查询:

select LEVEL as lvl, a.*

from (select * from test_tbl) a

start with a.parent is null

connect by PRIOR a.id_subj = a.parent;

似乎START WITH子句与PARENT字段中的NULL值不匹配 . 为什么会这样?

提前致谢 . 最好的祝福 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值