Oracle版本不同导致子查询表名相同时,查询失败

一、分析思路

环境:ssm项目+oracle数据库

由于疫情,居家办公,发现公司的项目弄到自己的电脑之后,应该是能正常跑的通才对,按照故事剧情,不出意外的话就要出意外了,请看下面

看到这个界面我直接原地起飞。

代码运行异常,后来通过排查确定原因是因为SQL语句执行失败。

未明确定义列,嗯?????

这个代码在公司电脑上命名跑的好好的,在自己电脑就运行异常

接下来就是将SQL复制到Navicat中去运行,其实这个sql远没有这么简单,这是后来经过层层排查,把这段SQL简化简化再简化成了这样

SELECT
	A.REP_ID,
	A.REP_DATE,
	A.SUBMIT_ORG_ID,
	A.REP_STATUS_ID,
	DECODE(CW.REP_STATUS_ID, NULL, '待签收', 3, '已签收') CW_STATUS,
	CW.OPERATE_TIME CW_TIME
FROM
	(
		(
		SELECT
			REP_ID,
			REP_DATE,
			SUBMIT_ORG_ID, 
			MAX( TO_NUMBER( REP_STATUS_ID ) ) REP_STATUS_ID 
		FROM REP_STATUS 
		WHERE REP_ID = '00002'
			AND REP_STATUS_ID IN ( '1', '2', '5', '10' ) 
			AND REP_DATE LIKE '%2022-06%' 
		GROUP BY
			REP_ID,
			REP_DATE,
			SUBMIT_ORG_ID 
		) A 
		
		LEFT OUTER JOIN ( 
		SELECT REP_DATE, SUBMIT_ORG_ID, REP_STATUS_ID FROM REP_STATUS WHERE REP_ID = '00002' AND REP_STATUS_ID = '3' AND CHECK_DEPT_ID = '11006000' 
		) CW ON CW.SUBMIT_ORG_ID = A.SUBMIT_ORG_ID 
		
		LEFT OUTER JOIN REP_STATUS CW ON A.REP_ID = CW.REP_ID 
		AND A.REP_DATE = CW.REP_DATE 
		AND A.SUBMIT_ORG_ID = CW.SUBMIT_ORG_ID 
		AND CW.REP_STATUS_ID = '3' 
		AND CW.CHECK_DEPT_ID = '11006000' 
	)

 

这是我自己的电脑执行, 好的漂亮,出错了提示 未明确定义列

相同的sql,到公司的电脑去执行

 有点模糊,反正就是能查询出来结果,这时候我就有疑问了,这是怎么回事

这里解释一下,我把查询的逻辑关系梳理了一下,其实就是在查询的时候做了三个临时表分别是

表A,表CW,表CW

这里就出现问题了,其中有两张临时表的表名都是CW,这样导致查询列不明确。

但是这个SQL在公司的电脑上却没有问题

想了一下会不会是因为Oracle的版本不同导致了这个问题呢

查了一下自己的电脑的Oracle版本和公司的版本有什么不同

自己的Oracle版本:

 公司的Oracle版本:

继续思考,首先两个临时表CW,推断出应该是高版本的Oracle自动的识别除了列字段,因为第一个临时CW表,是没有 OPERATE_TIME  字段的,所以它会自动的匹配第二个表中的数据。

二、解决办法

其实问题也非常好解决,只要两个临时表的名称不重复就好了,比如说把第二个临时表名称改为CW1,这样就能正常执行了,这也算是踩坑吧

SELECT
  A.REP_ID,
  A.REP_DATE,
  A.SUBMIT_ORG_ID,
  A.REP_STATUS_ID,
  DECODE(CW.REP_STATUS_ID, NULL, '待签收', 3, '已签收') CW_STATUS,
  CW.OPERATE_TIME CW_TIME
FROM
  (
    (
    SELECT
      REP_ID,
      REP_DATE,
      SUBMIT_ORG_ID, 
      MAX( TO_NUMBER( REP_STATUS_ID ) ) REP_STATUS_ID 
    FROM REP_STATUS 
    WHERE REP_ID = '00002'
      AND REP_STATUS_ID IN ( '1', '2', '5', '10' ) 
      AND REP_DATE LIKE '%2022-06%' 
    GROUP BY
      REP_ID,
      REP_DATE,
      SUBMIT_ORG_ID 
    ) A 
    
    LEFT OUTER JOIN ( 
    SELECT REP_DATE, SUBMIT_ORG_ID, REP_STATUS_ID FROM REP_STATUS WHERE REP_ID = '00002' AND REP_STATUS_ID = '3' AND CHECK_DEPT_ID = '11006000' 
    ) CW1 ON CW1.SUBMIT_ORG_ID = A.SUBMIT_ORG_ID 
    
    LEFT OUTER JOIN REP_STATUS CW ON A.REP_ID = CW.REP_ID 
    AND A.REP_DATE = CW.REP_DATE 
    AND A.SUBMIT_ORG_ID = CW.SUBMIT_ORG_ID 
    AND CW.REP_STATUS_ID = '3' 
    AND CW.CHECK_DEPT_ID = '11006000' 
  )

将第一个临时表名称换了一下就可以了。

Jinxin1230
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
oracle 查询表名以及表的列名
09-11
oracle 查询表名以及表的列名的代码。
oracle不同版本功能,Oracle 不同版本之区别
weixin_35192920的博客
04-03 274
This document summarizes the differences between Oracle Server releases.Most DBA's and developers work with multiple versions of Oracle at any particular time. This document describes the high level f...
oracle无法查询表空间,oracle教程之oracle 查询表空间
weixin_35965498的博客
04-09 297
Oracle查询表空间使用情况--查询表空间使用情况SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTT...
Oracle数据库同一个实例下不同用户表名重复的问题
热门推荐
gtt875
05-18 1万+
首先我们要明确:表名和用户没有关系,关键的一个实例下,不能有相同表名存在。也就是说Oracle数据库系统中,可以有多个数据库,每一个数据库可以有多个数据表。同一个数据库中不能有相同名称的数据表,但在不同数据库中可以有相同的数据表名。 通常情况我们都是在一个数据库实例下创建多个用户,因此就会出现不同用户下表名重复,hibernate映射表映射不出来的问题,解决办法就是在访问数据库
oracle外部表查询失败,使用Oracle的外部表查询警告日志
weixin_33289151的博客
04-07 212
Oracle9i开始,Oracle的外部表技术(Oracle External Tables)被极大的增强,通过外部表访问外部数据增强了Oracle数据库和外部数据源进行数据交互的能力,对于数据仓库和ETL来说,这些增强极大的方便了数据访问。对于DBA来说,最常见一个例子是可以使用外部表来访问警告日志文件或其他跟踪文件.以下一个例子用来说明外部表的用途。首先需要创建一个Directory:[or...
Oracle11.2.0.4版本多层嵌套查询无法识别列名的问题
还不算晕的专栏
06-04 2540
问题: 某用户遇到的问题是多层嵌套查询子查询,存在不识别子查询中列名称报错(ORA-00904: “DUAL”.“DUMMY”: invalid identifier)。 该应用程序已经无人维护,无法通过程序升级来改写SQL方式处理,因此需要从数据库角度对此问题进行分析并确认数据库层面是否可以解决。 分析: 经分析结合MOS文档以及实际测试,结论如下: 从ORACLE官方SUPPORT上...
oracle基本查询操作子查询用法实例分析
09-08
主要介绍了oracle基本查询操作子查询用法,结合实例形式分析了oracle数据库子查询相关概念、原理、语法、使用技巧与操作注意事项,需要的朋友可以参考下
oracle笔记子查询
09-21
oracle笔记子查询,有子查询相关的知识点笔记和具体的案例代码!
Oracle基础学习之子查询
09-09
所谓子查询就是当一个查询的结果是另一个查询的条件,称之为子查询。本文给大家详细的介绍了关于Oracle子查询的相关知识,文中的内容也算是自己的一些学习笔记,希望对有需要的朋友们能有所帮助,感兴趣的朋友们...
Oracle数据库中基本的查询优化与子查询优化讲解
09-10
主要介绍了Oracle数据库中基本的查询优化与子查询优化讲解,举了实例来分析子查询对性能的影响,需要的朋友可以参考下
oracle子查询常见错误
weixin_33725515的博客
03-19 200
1.单行子查询最多返回一行,不要视图向外部查询中单纯的=,>,<操作符传递多行。 2.子查询不能包含ORDER BY语句,排序在外部查询中使用。 3.检查多行子查询使用IN,ANY,ALL,EXISTS等。 4.使用ANY,在其前面必须使用一个=,<>,<,>,<=,>=操作符,与列表中任何值进行比较。 5.使用ALL,...
oracle不同用户执行相同sql,不同用户同样环境同样的SQL执行计划不共享问题(AUTH_CHECK_MISMATCH)...
weixin_29387991的博客
04-10 326
Cursor not shared for different usersMy colleague Peter Kramsu came to me and wanted to discuss an interesting problem. This is a summary of his findings.Problem Details:Same query executed by two dif...
oracle分页查询top,Oracle子查询相关内容(包含TOP-N查询和分页查询)
weixin_39801158的博客
04-03 281
本节介绍Oracle子查询的相关内容:实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下:一、子查询1、概念:嵌入在一个查询中的另一个查询语句,也就是说一个查询作为另一个查询的条件,这个查询称为子查询。那么可以使用子查询的位置有select后面、from后面、where后面以及having后面。2、分类:(1)单行子查询查询结果只返回一行数据(2)多行子查询:...
oracle 查询当天的数据_子查询引起的oracle数据库bug分析
weixin_39672443的博客
12-06 91
[环境配置]操作系统:linux7 ,数据库为12.1.0.1.3单机,未应用任何补丁。[报错现象]现象描述:使用plsql连接数据库执行语句(语句见下图),并点击获取最后一页后抛出如下截图报错,客户端连接被中断。执行的语句信息如下,查询语句含多个子查询:[报错分析]看到上述报错的第一反应是在alert日志中搜索ora-03113和ora-03114关键字,但并未搜索到。于是查看是否有其...
oracle同样的sql结果不稳定,Java程序和在Oracle数据库中调用相同SQL查询语句,结果却不相同解决方法...
weixin_42302418的博客
04-12 673
Java程序和在Oracle数据库中调用相同SQL查询语句,结果却不相同同样数据查询语句,利用Java程序调用的结果为什么和在Oracle数据库查询的结果不相同?以下是我的Java代码调用的数据库后返回的结果和SQL语句及在该SQL语句下的查询结果,两个结果为什么不相同呢?求解!packageorg.programming.student;importjava.sql.*;importja...
oracle版本的区别,Oracle版本的区别有那些
weixin_28273593的博客
04-03 2885
Oracle版本的区别有那些http://database.51cto.com/art/201004/196494.htmhttp://database.51cto.com2010-04-23 15:20 佚名 互联网 我要评论(0)摘要:以下的文章主要是对Oracle版本的区别的简述,如果你对其的相关内容感兴趣的话,以下的文章主要就是对其相关内容的具体介绍。标签:Oracle版本[A...
oracle删除表空间后 再创建同名表空间报错 OSD-04010
小O
08-25 3243
1.在pl/sql中用如下命令创建表空间 create tablespace energy_winter logging datafile '\opt\oradata\dev\energy_winter.dbf' size 32m autoextend on next 32m maxsize 2048m  extent management local ; 2.删除该表空间 d
mybatis oracle不同表空间表名重复与批量删除,新增
tiandao321的专栏
07-18 2654
mybatis自动生成中会遇到oracle不同表空间中有相同的表明,错误提示让你选择指定表空间 需要在生成的xml中添加指定的表空间用户名就可以了 enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
oracle查询两张表相同字段\查询某张表的所有字段\同步两张表相同字段
xuyanqiang123的博客
11-24 6606
查询某张表的所有字段 select column_name from user_col_comments t where table_name = upper('tableName') 查询两张表相同字段 select wm_concat(column_name ) from ( select column_name from user_col_comments t where table_name = upper('tableName1') intersect select column_name f
oracle查询所有包含列的表名
最新发布
05-30
你可以使用以下的 SQL 语句查询所有包含指定列的表名: ```sql SELECT DISTINCT table_name FROM all_tab_columns WHERE column_name = 'YOUR_COLUMN_NAME'; ``` 其中,YOUR_COLUMN_NAME 是你要查询的列名。这个...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 使用SpringBoot项目继承Knif4j访问doc.html页面,出现No mapping for GET /doc.html 3125
  • 数字的ASCII码值转为大写字母 1693
  • Oracle版本不同导致子查询表名相同时,查询失败 245

最新评论

  • 使用SpringBoot项目继承Knif4j访问doc.html页面,出现No mapping for GET /doc.html

    CSDN-Ada助手: 云原生入门 技能树或许可以帮到你:https://edu.csdn.net/skill/cloud_native?utm_source=AI_act_cloud_native

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 数字的ASCII码值转为大写字母
  • 使用SpringBoot项目继承Knif4j访问doc.html页面,出现No mapping for GET /doc.html
2023年1篇
2022年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

两个鬼故事张姓女孩高分起名辐射4配置姓彭的男孩起什么名字快乐由我家庭农场名称怎么起名八画的字起名用氵字旁的字有哪些字起名字的好河北经济频道奇数是什么意思宝宝起名那家公司哪家好下一个就是你高速将统一限速标志风水小说问天电视剧东方卫视手机在线直播同班同学电影cctv1在线观看花月奴忍者村大战牙膏店铺起名黄花草油酸是什么东西姓氏欧阳男孩起名大全贺朝谢俞c到哭聚划算秒杀器如何给自己起一个英文名字征服歌词家纺 起名字主角男扮女装的动漫李姓宝宝起名双宝宝起名少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化