Oracle00-918:未明确定义列的错误

  未明确定义列错误

   原因:在查询语句中同一列被查询了两次,在通过结果集得值的时候,不知道得哪一个结果,导致该错误

      

情况一:例如:select tb_name,tb_id,tb_name from tableName where tb_id = 2

          while(rs.next){

            String s =   rs.getString(tb_name);

        }

这样写的时候就会出现该错误,因为tb_name在结果中有两项,不知道选择哪一个作为值,出现该错误

解决办法:去掉一个tb_name即可

情况二:当多表连接的时候,可能出现列明相同的情况。(最好的办法是通过添加别名)

例如:select * from tableA  a,tableB b where a.a_id  = b.a_id

关系是通过tableA的a_id建立起来的。恰好tableB中表示tableA 的a_id的列明也叫a_id,这时候a_id就会出现两次,一次是通过tableA查询所得到的,二次是通过tableB得到的。所以在通过结果集得a_id(rs.getInt("a_id"))的时候就会出错 ,因为不确定是得那一列a_id。

解决办法:

    1:指定查询列。这样可以指明a_id只查询一次。后面得值也就不会出现列明相同无法区别的错误了。例如:select a.a_id.a.a_name ,b.b_id ,b.b_name from tableA a,tableB b where a.a_id        = b.a_id

    2 :创建别名:两个字段相同了。可以取别名来区分相同字段名。例如:select a.a_name aname,b.a_name bname from tableA a,tableB b ;

       如果相同字段名都需要查询出来,只能通过表引用或者添加别名来解决此问题

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值