我知道有很多这样的问题,但我的问题不是如何摆脱这个错误,而是要知道它在第 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/