ORA-00918未明确定义列.在oracle10g.和oracle11g中执行结果不同及解决办法

  1. 测试环境oracle版本10g.正式环境oracle版本11g
  2. 这是一个简单多表联查.
  3. 其中create_time,create_by,update_time,update_by,remarks.5个字段在这几个表中都有.
  4. 测试环境正常,正式环境报错

ORA-00918未明确定义列.在oracle10g.和oracle11g中执行结果不同及解决办法

测试环境的oracle版本 10g

ORA-00918未明确定义列.在oracle10g.和oracle11g中执行结果不同及解决办法

正式环境的oracle版本 11g


ORA-00918未明确定义列.在oracle10g.和oracle11g中执行结果不同及解决办法
在测试环境oracle10g中可以查询

这里并不知道不报错的原因.猜测是10g默认使用 主表的字段进行展示.无需单独加别名

 

ORA-00918未明确定义列.在oracle10g.和oracle11g中执行结果不同及解决办法
在oracle11g上系统报错未明确定义列

这里猜测11q修复了无需别名.默认使用主表字段展示的bug.导致我们必须加入别名才能正常查询

ORA-00918未明确定义列.在oracle10g.和oracle11g中执行结果不同及解决办法
修改后的sql可以正常查询了

需要将不同表中 相同字段加上别名.否则oracle不知道你要展示哪个表的字段