ORA-00918: column ambiguously defined
今天遇到了一个Oracle的SQL问题:ORA-00918: column ambiguously defined
大致的意思就是字段名称不明确,可能存在同名的字段
SELECT *
FROM (SELECT ROW_.*, ROWNUM ROWNUM_
FROM (SELECT ACCEPT_DEPT_NAME,
ACCEPT_NO,
ACCEPT_TIME,
FINISH_TIME,
RECENT_OPINION,
ACCEPT_USER_NAME,
APPLY_USER_ID,
FIRST_SUBMIT_TIME,
INFOFLOW_ID,
ACCEPT_DEPT_ID,
BIZ_STATE,
IS_SUPPLY,
IS_SUBMIT,
INFOFLOW_NAME,
SERIAL_NO,
APPLY_TYPE,
APPLY_USER_NAME,
INFOFLOW_TYPE_NAME,
AREA_CODE,
APPLY_SUBJECT_NAME,
FINISH_TYPE,
ACCEPT_ORGAN_INAME,
IS_RESUBMIT,
APPLY_NO,
INFOFLOW_TYPE_ID,
IS_SUBMIT,
ACCEPT_USER_ID,
ACCEPT_ORGAN_ID,
RECENT_SAVETIME,
RECENT_RESULT,
AREA_NAME
FROM DSPC_APPLY_BASE
WHERE 1 = 1
and IS_SUBMIT = '0'
and APPLY_USER_ID = 'ADMIN') ROW_
WHERE ROWNUM <= 10)
WHERE ROWNUM_ > 0
程序使用的是自动化的Java实体映射SQL字段,查询数据的SQL并没有自己拼写,是由框架自动生成的,系统会打印出执行的SQL语句
将SQL语句复制到PLSQL中执行,也报同样的异常,只执行最内层的select语句是没有问题的,加上最外层的SELECT ROW_.*就出现ORA-00918异常
网上查了一些资料,大多都是几个表联查出现的问题,而我的程序只涉及到一个单表
仔细看了下程序打印出来的SQL,虽然是单表查询,但是发现执行的SQL语句里有两个相同的字段名IS_SUBMIT,到这里,原因基本上就找到了,后来去看了下Java实体类映射中的ORM标注,发现的确有两个属性名称不同的Java属性映射了同一个SQL字段,修改之后,问题你迎刃而解。
参考资料:
http://www.dotblogs.com.tw/sporting/archive/2012/10/10/76382.aspx
http://blog.chinaunix.net/uid-20274021-id-1969225.html
ORA-00918: column ambiguously defined的更多相关文章
- Caused by: java.sql.SQLException: ORA-00918: column ambiguously defined
外层t.*的时候,可能发现重复字段,所以检查内层的sql是否出现了重复字段的查询.
- Oracle Purchasing QUESTIONS AND ANSWERS
Topic Summary Topic: CORRECTIONS: Corrections Topic: DELIVER: Receiving Delivery Topic: DROPSHIP: Dr ...
- SQL内连接-外连接join,left join,right join,full join
1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...
- SQL错误总结
ORA-00918: column ambiguously defined 异常原因: select 查询的字段在from的两张表中都存在,导致数据库无法区别需要查询的字段来自于哪张表 以下是例子 s ...
- SAP Column tree
code as bellow *&---------------------------------------------------------------------* *& I ...
- Oracle 所有字典
select * from DBA_CONS_COLUMNS ; ---Information about accessible columns in constraint definitions s ...
- oracle已知会导致错误结果的bug列表(Bug Issues Known to cause Wrong Results)
LAST UPDATE: 1 Dec 15, 2016 APPLIES TO: 1 2 3 4 Oracle Database - Enterprise Edition - Versi ...
- 浅谈Slick(3)- Slick201:从fp角度了解Slick
我在上期讨论里已经成功的创建了一个简单的Slick项目,然后又尝试使用了一些最基本的功能.Slick是一个FRM(Functional Relational Mapper),是为fp编程提供的scal ...
- 一些性能查询的SQL 备忘
--检查数据库的等待事件 from v$session_waitwhere event not like 'SQL%' and event not like 'rdbms%' --找出系统中耗时的操作 ...
随机推荐
- JAVA Zero Copy的相关知识【转】
转自:https://my.oschina.net/cloudcoder/blog/299944 摘要: java 的zero copy多在网络应用程序中使用.Java的libaries在linux和 ...
- 【Android】Gesture Detector
Gesture detector Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等. 这些Ge ...
- 【嵌入式】使用Cross Toolchain构建交叉工具链
Preface 前面编译linux内核的时候,用各种cross版本都不行啊,真是纠结,于是就想着自己也要会编译交叉工具的方法,然后各种尝试,各种问题啊,最后还是没解决(还有其它事情),步骤我都走熟了, ...
- 让浏览器兼容H5元素和媒体查询的代码
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.j ...
- C#学习笔记(12)——三种方法操作XML
说明(2017-7-11 16:56:13): 原文地址: C#中常用的几种读取XML文件的方法 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web. ...
- 1. 集成学习(Ensemble Learning)原理
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- WCF数据契约
当使用DataMember时,和访问符无关,及时使用了private,成员都是可见的.相反如果使用static,为不可见. 上述的两个数据成员是等效的,如果是等效的话 数据成员的顺序也必须是相同的. ...
- Jquery的回调函数的使用
用$.Callbacks实现观察者模式 // 观察者模式 var observer = { hash: {}, subscribe: function(id, callback) { if (type ...
- [NBIoT]NBIoT相关知识
转自:http://blog.csdn.net/nbiot/article/details/54906431 通常,我们把物联网设备分为三类: ①无需移动性,大数据量(上行),需较宽频段,比如城市监控 ...
- Java多线程编程中Future模式的详解<转>
Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...