在查询语句中,常常会出现一个错误:
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