表 T
create table T
(
ID NUMBER,
CID number,
primary key(ID)
);
表TC
create table TC
(
CID number,
CNAME VARCHAR2(10),
primary key(CID)
)语句1
select
(select tc.cid
from tc where tc.cid=t.cid) AS C
from t在任何版本下都能执行但语句2
select
(select cid from (select tc.cid
from tc where tc.cid=t.cid)) AS C
from t在oracle9i下不能执行 提示t.cid不识别
ORacle 10.0.2版本下能执行
更奇怪的是 在oracle10.0.3下也不能执行 相同的提示大家不要考虑这句话的实际意义,因为我是从一个复杂的数据逻辑中抽取出来的简单逻辑
谁能解释一下
我怀疑可能跟数据库服务器的设置有关
create table T
(
ID NUMBER,
CID number,
primary key(ID)
);
表TC
create table TC
(
CID number,
CNAME VARCHAR2(10),
primary key(CID)
)语句1
select
(select tc.cid
from tc where tc.cid=t.cid) AS C
from t在任何版本下都能执行但语句2
select
(select cid from (select tc.cid
from tc where tc.cid=t.cid)) AS C
from t在oracle9i下不能执行 提示t.cid不识别
ORacle 10.0.2版本下能执行
更奇怪的是 在oracle10.0.3下也不能执行 相同的提示大家不要考虑这句话的实际意义,因为我是从一个复杂的数据逻辑中抽取出来的简单逻辑
谁能解释一下
我怀疑可能跟数据库服务器的设置有关
select
(select cid from tc where tc.cid=t.cid
--(select tc.cid from tc where tc.cid=t.cid)
) AS C
from t
是可以的。select
(select cid from --tc where tc.cid=t.cid
(select tc.cid from tc where tc.cid=t.cid)
) AS C
from t
不可以,报t.cid无效,换句话说,2层嵌套内引用最外层表时,oracle9i不认。建议:改成引用一层嵌套的表。SQL越简单,越不会出错。改成若干个小SQL更好。或者换成function。
谁能解释一下为什么呢?oracle里是怎么实现这个查询的? 我总觉得 应该和oracle的设置有关 否则不会低版本和高版本都不行 中间一个版本却可以