SQL基础:Oracle00-918:未明确定义列的错误

来源:互联网 发布:高并发解决方案java 编辑:程序博客网 时间:2024/04/30 20:35

运行环境:Oracle10g PL/SQL环境下。
在查询语句中,经常会出现一个错误:
SQL基础:Oracle00-918:未明确定义列的错误。

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

第一种情况:
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 这样就要报错。因为也是无法确定查
哪一列。需要明确定义A.a活着B.a

暂时遇到这两种情况。
如有不对,请各位指正。




原创粉丝点击