求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
所以我还是怀疑可能跟嵌套太多有关。 展开
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
所以我还是怀疑可能跟嵌套太多有关。 展开
2个回答
展开全部
嵌套查询先处理内查询,由内向外处理,外层利用内层的查询结果。
追问
不对呀,内层应该可以引用外层结果。我以前就试过。
现在的问题是一个子查询中包含了一个内联视图子查询,也就是说算上父查询,总共有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表
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询