select regexp_substr((select visavis from empassess where id = 151),
'[^,]+',
1,
level)
from dual
connect by regexp_substr((select visavis
from empassess
where id = 151),
'[^,]+',
1,
level) is not null)
order by id
select count(id)
from hrmresource
where id in
(select regexp_substr((select visavis from empassess where id = 151),
'[^,]+',
1,
level)
from dual
connect by regexp_substr((select visavis
from empassess
where id = 151),
'[^,]+',
1,
level) is not null)
但是这个只有29条,
前提说明一下,这个hrmresource 表中存在这个31个的ID
所以求助这个是什么原因导致
29说的是嵌套的层数。因为数据库查询不像编程语言可以递归调用,都需要展开的,所以这个层数在不同数据库里都不是很大,access是8层,sql server是16层,oracle30层已经不小了。
是不是id有重复导致的呢
我遇到过这个现象,不只对你是否有帮助,实表100条记录,语句查询90条记录,感觉很不可能,oracle出问题了?
最后发现是index信息不及时造成,删掉走的那个索引重建就是100条数据了。
你或者加个 select /*+ no_index(t1 idx_t1)*/ * from t1 where n=1;看看结果