我想楼主的目的是:NODE_DEF表中没有class_id这个字段,为什么oracle让 select class_id from node_class_def where class_id in (select class_id from node_def where NODE_DESCRIPE='CDMA' ) 通过了。
oracle肯定不会错,错误只能在你这里。还是仔细核对一下,肯定哪里有疏忽的地方。
i asked the question beforethe answer is http://expert.csdn.net/Expert/topic/1708/1708123.xml?temp=.8685419
select class_id from node_def where NODE_DESCRIPE='CDMA' 这句话本身就是错的 因为表node_def里没有class_id这个字段呀!!!
ORACLE总会犯错的。 比如: select*from dual; select* from dual; select *from dual; 都与 select * from dual;相同, 不信你试试,呵呵。
对于楼主以上问题,以前有人问过,这可能是oracle设计一个漏洞!SQL> desc aa; Name Type Nullable Default Comments ---- ----------- -------- ------- -------- ID VARCHAR2(1) Y FID VARCHAR2(1) Y
SQL> desc bb; Name Type Nullable Default Comments ---- ----------- -------- ------- -------- NO VARCHAR2(1) Y FNO VARCHAR2(1) Y SQL> select * from aa;ID FID -- --- 1 0 2 1 3 1 4 2 5 3 6 4 6 5SQL> select * from bb;NO FNO -- --- 1 0 2 1 3 1但对于以下,oracle居然可解释为这样: SQL> select * from aa where id in (select id from bb);ID FID -- --- 1 0 2 1 3 1 4 2 5 3 6 4 6 5但单句会出错: SQL> select id from bb;select id from bbORA-00904: 无效列名以上测试可以说oracle把select id from bb看成一个集,取aa表所有数据。
SQL> select * from aa where id in (select id from dual);ID FID -- --- 1 0 2 1 3 1 4 2 5 3 6 4 6 5与上面结果一样,证明bb表作虚表
ORACLE是怎么解释的呢? select class_id from node_def where NODE_DESCRIPE='CDMA' 而表node_def没有class_id
select class_id from node_class_def where class_id
in (select class_id from node_def where NODE_DESCRIPE='CDMA' )
通过了。
这句话本身就是错的
因为表node_def里没有class_id这个字段呀!!!
比如:
select*from dual;
select* from dual;
select *from dual;
都与
select * from dual;相同,
不信你试试,呵呵。
Name Type Nullable Default Comments
---- ----------- -------- ------- --------
ID VARCHAR2(1) Y
FID VARCHAR2(1) Y
SQL> desc bb;
Name Type Nullable Default Comments
---- ----------- -------- ------- --------
NO VARCHAR2(1) Y
FNO VARCHAR2(1) Y SQL> select * from aa;ID FID
-- ---
1 0
2 1
3 1
4 2
5 3
6 4
6 5SQL> select * from bb;NO FNO
-- ---
1 0
2 1
3 1但对于以下,oracle居然可解释为这样:
SQL> select * from aa where id in (select id from bb);ID FID
-- ---
1 0
2 1
3 1
4 2
5 3
6 4
6 5但单句会出错:
SQL> select id from bb;select id from bbORA-00904: 无效列名以上测试可以说oracle把select id from bb看成一个集,取aa表所有数据。
-- ---
1 0
2 1
3 1
4 2
5 3
6 4
6 5与上面结果一样,证明bb表作虚表
select class_id from node_def where NODE_DESCRIPE='CDMA'
而表node_def没有class_id