The used SELECT statements have a different number of columns 错误解决

来源:互联网 发布:江西理工大学软件学院 编辑:程序博客网 时间:2024/06/10 01:44

昨天,遇到了一个sql异常错误信息:java.sql.SQLException: The used SELECT statements have a different number of columns,sql我自己随意写了一个,大概是这样子:

SELECT    S.s1 AS n1,    S.s2 AS n2,    Y.y2 AS n3,    S.s3 AS n4FROM    SINNER JOIN Y ON S.s1 = Y.y1WHERE    S.s4 = 'student'UNION ALL    SELECT        S.s1 AS n1,        S.s2 AS n2,        Z.z2 AS n3,        S.s3 AS n4    FROM        S    INNER JOIN Z ON S.s1 = Z.z1    WHERE        S.s4 = 'teacher'    ORDER BY        n1 DESC;

其中UNION ALL所select的4个列类型都是一样的,而且列数都是4,只不过所查询的列中,Y表的y2和Z表的z2所查询的条件不同,但都是和S表关联起来的,不知道为何,本地跑起来没问题,断点调试进去把sql扒出来一查也是没问题,并且把sql搞到测试数据库也没问题,但是在后台显示的时候就会报上述的那种sql异常错误,后来去查了一下网上报这种错误的,都说是列数不一致或者是有某一列类型不一样,我看了一下,基本没问题啊。

最后,去查询了一下UNION 和 UNION ALL的差别,下面摘自网上:

UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。
2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。
从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。

我要实现的功能可以包含重复的数据,所以就用UNION ALL,但还需要对查询出来的结果进行排序,但下面说对排序的处理,UNION ALL只是简单的将两个结果合并后就返回。所以就怀疑是不是后面那个ORDER BY n1 DESC导致的问题,所以改了一下SQL,改了之后如下:

SELECT * FROM (SELECT    S.s1 AS n1,    S.s2 AS n2,    Y.y2 AS n3,    S.s3 AS n4FROM    SINNER JOIN Y ON S.s1 = Y.y1WHERE    S.s4 = 'student'UNION ALL    SELECT        S.s1 AS n1,        S.s2 AS n2,        Z.z2 AS n3,        S.s3 AS n4    FROM        S    INNER JOIN Z ON S.s1 = Z.z1    WHERE        S.s4 = 'teacher') t    ORDER BY        t.n1 DESC;

把UNION ALL所查出来的数据作为一个临时表t,然后再通过查出来的t.n1来排序,最后没问题了,但是效率估计不太好。

不清楚是不是MYSQL版本或者敏感问题导致,以上内容仅供参考,谢谢!

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 忘记申请的邮箱怎么办 填写简历忘记邮箱怎么办 雅虎邮箱忘记用户名怎么办 oppo手机忘记密码怎么办 设备昵称忘了怎么办 快手昵称被注册怎么办 app占用越来越大怎么办 淘宝昵称被占用怎么办 电脑开机时间不准怎么办 电脑的时间不对怎么办 做完运动饿了怎么办 qq被冻结七天怎么办 12306电话号码忘了怎么办 新教练没会员怎么办 微博转发频繁怎么办 丰声用户不存在怎么办 微信用户不存在怎么办 社保卡忘记密码怎么办 斗鱼忘记邮箱怎么办 手机看斗鱼怎么办办卡 微博昵称受限怎么办 被新浪屏蔽了怎么办 微博qq忘记密码怎么办 三星盖乐世忘记密码怎么办 三盖乐世4忘记密码怎么办 密码锁钥匙丢了怎么办 商标是tm标怎么办 环保合格证掉了怎么办 车子合格证丢了怎么办 大牙附近肿了怎么办 办好营业执照后怎么办商标 商标十年到期了怎么办 公司注册了商标怎么办 2018年属兔不适合结婚怎么办 交通事故对方没钱赔怎么办 滴滴快车出车祸怎么办 交警法院扣车怎么办 肇事逃逸没钱赔怎么办 撞死人无力赔偿怎么办 宝贝咳嗽很厉害怎么办 开车有人别车怎么办