zoukankan      html  css  js  c++  java
  • [转载] 关于出现“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式”错误的可能原因

    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代表该临时表的表名。

  • 相关阅读:
    [IMX6]Android6.0移植和分析
    Android设计原则和设计模式
    Linux内核源码目录
    Android源码博客目录
    Android应用博客目录
    imx6的kernel3.4.15启动流程
    dd命令
    shell
    i.mx6 Android5.1.1 build解析
    git总结
  • 原文地址:https://www.cnblogs.com/AaronBear/p/6643011.html
Copyright © 2011-2022 走看看