oracle未明肯定义列

在查询语句中,常常会出现一个错误: 
SQL基础:ORA-00918:未明肯定义列的错误。 

当前遇到有两种状况。缘由为:当查询语句中,查询的表(数据集)中有相同的字段名,查询字段没法确认是改查那个字段 
时,就会报未明肯定义列的错误。 

第一种状况: 
1.单表时: 
好比fconsign表中存在三个字段:fcsg_consign_id,fcsg_consign_type,fcsg_consign_status 
SELECT FCSG_CONSIGN_ID FROM (SELECT FCSG_CONSIGN_ID,FCSG_CONSIGN_TYPE,FC.* FROM FCONSIGN FC) T
这个SQL语句就会报错,由于在T中FCSG_CONSIGN_ID有两个字段,致使DBMS没法肯定要查询的哪一个列 
SELECT FCSG_CONSIGN_STATUS FROM (SELECT FCSG_CONSIGN_ID,FCSG_CONSIGN_TYPE,FC.* FROM FCONSIGN FC) T 
这样就不会报错了,T中FCSG_CONSIGN_STATUS只有一个,这样就不会报错了。 

总而言之:在嵌套查询中,外查询的字段在子查询中只能出现一个,不然则没法肯定是要查哪一个字段。就会报 未明肯定义列的错误。 

2.多表联合查询 
好比表A,B中都有a字段。 
select a from A,B 这样就要报错。由于也是没法肯定查 
web

哪一列。须要明肯定义A.a活着B.a (若是在from语句后面为表取了别名,好比 select s_no,s_name,s_score,s.class_no,class_name from student s join class c on (s.class_no = c.class_no)的时候, 则 select语句中那个被多张表都拥有的相同字段名也须要用别名标识 如:s.class_no.)spa

相关文章
相关标签/搜索