运行环境:Oracle10g sqlplus环境下。 

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

当前遇到有两种情况。原因为:当查询语句中,查询的表(数据集,如a,b2张表格)中有相同的字段名,查询字段无法确认是该查哪个字段时,就会报未明确定义列的错误。

第一种情况: 

1.单表时: 

比如sign表中存在三个字段:

sign_id,sign_type,sign_status  SELECT SIGN_ID FROM (SELECT SIGN_ID,SIGN_TYPE,FC.* FROM SIGN FC) T

这个SQL语句就会报错,因为在T中SIGN_ID有两个字段(原因:sql语句中FC.*表示将sign表中所有字段再进行一次查询,与sql中原有的sign_id重复),导致DBMS无法确定要查询的哪个列 

修改之后:

SELECT SIGN_STATUS FROM (SELECT SIGN_ID,SIGN_TYPE,FC.* FROM FCONSIGN FC) T 

这样就不会报错了,T中SIGN_STATUS只有一个,这样就不会报错了。 

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

 第二种情况:

2.多表联合查询 

比如表A,B中都有a字段。 

select a from A,B

这样就要报错。因为也是无法确定查 哪一列。需要明确定义A.a或者B.a (如果在from语句后面为表取了别名,

比如 select a.a from A a join B b on (a.a = b.b)的时候,

则 select语句中那个被多张表都拥有的相同字段名也需要用别名标识 如:a.a.)

相关文章:

  • 2021-07-18
  • 2021-07-02
  • 2021-11-11
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2022-12-23
猜你喜欢
  • 2021-10-23
  • 2021-08-29
  • 2022-12-23
  • 2022-02-24
  • 2021-10-08
  • 2021-09-29
相关资源
相似解决方案