ORA-00960: ambiguous column naming in select list

文档解释

ORA-00960: ambiguous column naming in select list

Cause: A column name in the order-by list matches more than one select list columns.

Action: Remove duplicate column naming in select list.

ORA-00960: ambiguous column naming in select list 是ORACLE 的 SQL 错误代码。

官方解释

该错误表明在 SELECT 子句中的列名称有歧义,在给定的上下文中没有确定的意义。错误也指示尝试使用了もう一个有相同名字的列或者表,可能是在 FROM 子句中添加到外部表,或者使用了别名而在SELECT 子句中不匹配。

常见案例

如果在 SELECT 子句中指定了一个列名,其由多个表中的同名列组成,将会抛出此错误,比如:

SELECT SCORE FROM STUDENTS, TEACHERS WHERE STUDENTS.STUDENT_ID=TEACHERS.STUDENT_ID;

这将导致 ORA-00960 错误,因为 STUDENTS 和 TEACHERS 表中都有 “SCORE” 列,而在上面的代码中没有区分其中有个那个 SCORE 来使用。

正常处理方法及步骤

1. 显式地指定表名:在 SELECT 子句中显式地指定涉及列名的表,比如:

SELECT STUDENTS.SCORE FROM STUDENTS, TEACHERS WHERE STUDENTS.STUDENT_ID=TEACHERS.STUDENT_ID;

2. 使用别名:如果需要从多个表中获取数据,可以给列指定别名,比如:

SELECT S.SCORE AS STUDENT_SCORE ,T.SCORE AS TEACHER_SCORE FROM STUDENTS S, TEACHERS T WHERE S.STUDENT_ID=T.STUDENT_ID;

3. 使用函数:使用上≥绝『对函数来处理涉及的列会使整个语句更清晰,比如:

SELECT MAX(S.SCORE) AS Student_MaxScore, MIN(T.SCORE) AS Teacher_MinScore FROM STUDENTS S,TEACHERS T WHERE S.STUDENT_ID=T.STUDENT_ID;

你可能感兴趣的