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

本文探讨了在Oracle10g与11g环境下执行多表联查时出现的不同行为。具体分析了在未指定字段别名情况下,Oracle10g默认使用主表字段展示,而Oracle11g则要求明确指定别名,以避免列定义冲突。通过对比两个版本的特性,解释了为何在升级数据库版本后,原有的SQL查询会引发错误,并提供了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

测试环境的oracle版本 10g

正式环境的oracle版本 11g


在测试环境oracle10g中可以查询

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

在oracle11g上系统报错未明确定义列

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

修改后的sql可以正常查询了

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值