求SQL高手解答:sql内联视图子查询中的where条件中无法引用最外层查询结果数据?

今天在写SQL时遇到一个问题,即sql内联视图子查询中的where条件中无法引用最外层查询结果数据。简化的sql语句如下:selectst.rowguid,(select... 今天在写SQL时遇到一个问题,即sql内联视图子查询中的where条件中无法引用最外层查询结果数据。简化的sql语句如下:

select st.rowguid,

(

select count(*) from

(
select t.id from rats.ttspl02 t
where t.from_st_guid=st.rowguid //此处oracle报错
group by t.id
having count(t.id)>1
)

) as num

from rats.ttsbs01 st

运行SQL后,oracle在第6行【 where t.from_st_guid=st.rowguid】报ORA-00904:'ST'.'ROWGUID'标示符无效。

难道在子查询【select count(*) from……】中嵌套的内联视图子查询【select t.id from rats.ttspl02 t where……】中无法引用到最外层的查询结果数据【st.rowguid】?

还请高手指教!
我觉得不全是这样。
目前是3层查询,如果改成2层查询,那么子查询过程中就可以引用到父查询结果。比如SQL:
select st.rowguid,
(
select t.id from rats.ttspl02 t
where t.from_st_guid=st.rowguid //此处可以应用到父查询数据“st.rowguid”
group by t.id
having count(t.id)>1
) as num
from rats.ttsbs01 st
所以我还是怀疑可能跟嵌套太多有关。
展开
 我来答
gougouruhua
2014-05-28 · 超过19用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:43.3万
展开全部
嵌套查询先处理内查询,由内向外处理,外层利用内层的查询结果。
追问
不对呀,内层应该可以引用外层结果。我以前就试过。
现在的问题是一个子查询中包含了一个内联视图子查询,也就是说算上父查询,总共有3层。最里面的一层访问不到最外层结果。
追答
select t.id from rats.ttspl02 t后面加个rats.ttsbs01 st
试一试,我个人也是认为是先执行最内层的就是
select t.id from rats.ttspl02 t
where t.from_st_guid=st.rowguid //此处oracle报错
group by t.id having count(t.id)>1
这里并未定义st表
micro0369
2014-05-28 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4026万
展开全部
这个好像就是无法支持。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式