【发布时间】:2011-11-07 10:36:04
【问题描述】:
我知道有很多这样的问题,但我的问题不是如何摆脱这个错误,而是要知道它在早期的 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'
?
【问题讨论】:
-
我真的很惊讶它在 Oracle 9 中工作。那个查询应该从来没有工作过。
-
您不是在迁移到 Oracle 11 的同一过程中将 TYPE 列添加到其中一个表中吗?或者,也许 GRANT 使您可以看到其中一列?
-
实际上我无法回答这个问题,因为我不是 DBA。所以我只是不知道这个数据库是如何迁移的(
-
所以我询问了 DBA 并获得了该信息:旧 DB 版本 10.2.0.4.0 - 查询运行良好新 DB 版本 11.2.0.2.0 - 我收到错误
-
请添加两个表的真实ddl,以及真实的查询