SQL 错误 : ORA-00918: column ambiguously defined

标签 sql oracle

请帮我找出我在这里做错了什么:

从第 1 行开始的错误:命令中的 1 -

CREATE VIEW VW_ROUTE AS
  SELECT ROUTE_NAME
       , FARE
       , DESTINATION
       , ROUTE_ID
       , STOP_NAME
       , TERMINUS
       , NUMBER_OF_STOPS
  FROM STOPS S
    LEFT JOIN ROUTE R
        ON S.ROUTE_ID = R.ROUTE_ID
 WHERE NUMBER_OF_STOPS > ('1')

Error at Command Line : 5 Column : 10
Error report -
SQL Error: ORA-00918: column ambiguously defined
00918. 00000 -  "column ambiguously defined"
*Cause:    
*Action:

最佳答案

您在两个表中具有相同的列名。添加别名。

CREATE VIEW VW_ROUTE AS
SELECT ROUTE_NAME
       , FARE
       , DESTINATION
       , S.ROUTE_ID          -- ROUTE_ID exists in table STOPS/ROUTE
       , STOP_NAME
       , TERMINUS
       , NUMBER_OF_STOPS
FROM STOPS S
LEFT JOIN ROUTE R
  ON S.ROUTE_ID = R.ROUTE_ID
WHERE NUMBER_OF_STOPS > ('1');

好的做法是在所有出现的情况下都使用别名以避免歧义。

关于SQL 错误 : ORA-00918: column ambiguously defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33899425/

相关文章:

sql - 如何在返回 View 行类型集的 pl/pgsql 函数中组合特定行?

mysql - 如何防止更新后SELECT FOR UPDATE发生死锁异常?

java - 如何强制自动生成正向 hibernate 主键

sql - 基于两表间子查询的Oracle SQL更新

sql - 使用表名称作为参数调用过程,并将与 PL/SQL 中的表相同的数据类型分配给变量

java - IO错误: Operation timed out

mysql - SQL 从一个表复制到另一个表的适当字段

sql - ACE.OLEDB.12 的替代方案,用于查询 Excel 数据表

sqlite3 正在截断/截断/截断我的文本列

java - 来自 Java 的甲骨文。对象参数的 CallableStatement 和 Null?