博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载] 关于出现“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式”错误的可能原因...
阅读量:4987 次
发布时间:2019-06-12

本文共 713 字,大约阅读时间需要 2 分钟。

 

1、 对于该问题确实存在UNION前后SELECT语句中的列数不同导致;

2、 以下为个人遇到的一种可能:
在项目开发中由于有张表是动态的,即有个基础表,其他的表按年月根据基础表来生成动态表,动态表结构和基础表保持一致。从动态表和基础表中同时查询数据,且根据各自的条件进行查询并将结果合并返回时,出现了“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式”错误,sql语句大致如下:
SELECT * FROM test WHERE id >= ‘’ UNION SELECT * FROM test_201501 WHERE id>=’’;
将该sql语句直接在数据库执行,没有出现任何错误,但是在Java代码中使用SQLQuery时出现了该错误,对该问题感觉很纳闷,于是将Java中执行的sql拿出来在数据库中执行还是没有发现问题,但Java中执行该问题依旧存在,由于对合并后的结果还需要根据某字段进行排序操作,于是就自己不断调试,最终sql如下:
SELECT * FROM 
(
SELECT * FROM test WHERE id >= ‘’ UNION SELECT * FROM test_201501 WHERE id>=’’
) t ORDER BY ID DESC;
把Java中执行的sql改成以上结果时,该问题得以修复。
说明:UNION后的结果集也可以看做一张临时表,然后从该表中查询数据即可,注意,其中红色的t代表该临时表的表名。

转载于:https://www.cnblogs.com/AaronBear/p/6643011.html

你可能感兴趣的文章
Hbase 源码研究
查看>>
python IsWindowEnabled遍历windows的所有窗口并输出窗口标题
查看>>
java面向对象三大特性:封装、继承、多态
查看>>
Oracle sql优化
查看>>
sweetalert 快速显示两个提示, 第二个显示不出的问题
查看>>
Redis 键(key)
查看>>
granger Z-score问题
查看>>
mybatis系列-07-输出映射
查看>>
汇编总结
查看>>
201521450014 网络对抗技术实验五 葛文宣
查看>>
第一台虚拟机
查看>>
丰沛数_不足数_完全数
查看>>
团队介绍
查看>>
HDFS
查看>>
指甲、趾甲 的病变
查看>>
struts(IDEA)的应用
查看>>
chrome插件中遇到的坑(一)
查看>>
Jackson基础
查看>>
《Thinking in UML 大象》笔记
查看>>
C++中tuple类型
查看>>