文档解释
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;