Oracle:列定义不明确

标签 oracle join defined

我知道有很多这样的问题,但我的问题不是如何摆脱这个错误,而是要知道它在第 9 版 Oracle 早期是如何工作的。

我有一个用 Ruby 和 Oracle DB 编写的旧源代码,最近升级到 version=11。

我无法在 Oracle DB 中编辑数据,只能读取。所以有两个表可以说:表 A(id, name, type, customer) 和表 B(id,a_id,type,person)

所以。源代码中有一个查询:

select a.id,b.id from a join b on a.id = b.a_id where type = 'A'

所以在 Oracle 9 中,这工作得很好,但现在我遇到了“列有歧义定义”的错误。

我想知道的是:
where type = 'A'

是相同的
where a.type = 'A' AND b.type = 'A'

或者
where a.type = 'A' OR b.type = 'A'

?

最佳答案

我认为这是 ANSI 样式连接的一个错误。使用 DBMS_XPLAN 查找旧数据库中正在过滤的表。

或者更好的是,从业务逻辑中找出他们查询的应该是什么。

关于Oracle:列定义不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254462/

相关文章:

javascript - javascript函数的未定义函数错误

sql - Oracle SQL Developer 复制数据库步骤

java - Hibernate 中的自定义连接实体

MySQL跨4张表select数据(多条件)

MySQL - 如果另一个连接行具有特定特征,则返回特定行

c# - Visual Studio 2010 C# "already defined a member with same parameter types error."

oracle - 如何确定 Oracle 列是否为 SecureFile

sql - 选择列表中包含函数调用的 ORDER BY 子句的性能问题

oracle - 无法在 Debug 中修改该值

Python- raw_input 不工作