首页
网页制作
网络编程
脚本专栏
数据库
网站运营
网络安全
平面设计
CMS教程
搜索
建站极客
数据库
MsSql
正文
union组合结果集时的order问题
所属分类:
数据库
/
MsSql
阅读数: 1636
收藏 0
赞 0
分享
近日,在一个项目中用到union组合两个select结果,调试sql时总是报错,所报错误也只是说在union附近有问题,因为sql中用到了group,我想也许是union不支持吧,由于时间紧,就先在程序中做了合并处理。但程序员对于代码的完美性要求总是不能放弃的,所以,常常会有如鲠在喉的感觉,不搞明白心里会不舒服。
仔细查看了MS的在线帮助,在有关UNION的描述中找到这样一段说明:
如果使用 UNION 运算符,那么各个 SELECT 语句不能包含它们自己的 ORDER BY 或 COMPUTE 子句。而只能在最后一个 SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。只能在各个 SELECT 语句中指定 GROUP BY 和 HAVING 子句。
在这段说明中并没有说union不能用于group,而是说在各个Select中不能包含order by,而在我的语句中恰恰就有这个,看来是我猜错了。试了一下把order去掉,果然不会报错了。也就是说,使用union的时候,各查询group是可以的,但不能order或compute。那如果说非要group,有没有办法呢?正常情况下只能在最后使用,而且是针对组合后的结果集进行排序的,而我刚才所说的group,就不能用于最终结果集,而只能用于每个查询。
这是正常的用法,有些人想在每个查询中先排序,然后再union,也有非正常的用法,类似:
select * from (select a from [table] order by a) union ...
另外,union后面还可以加上all,在默认情况下,union时会删除重复的项,如果加上all则不进行筛选,组合所有的结果。如果能确定各查询结果不会有重复的项,最好就带上all,因为这样还是可以提高一些效率的。
更多精彩内容
其他人还在看
sqlserver中将varchar类型转换为int型再进行排序的方法
sql中把varchar类型转换为int型然后进行排序,如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话
评论 0
收藏 0
赞 0
分享
在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
在项目开发中如果有时修改了一个存储过程,但是如何能够快速的查找到使用了这个存储过程的其它存储过程呢
评论 0
收藏 0
赞 0
分享
sqlserver bcp(数据导入导出工具)一般用法与命令详解
bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据
评论 0
收藏 0
赞 0
分享
重命名SQLServer数据库的方法
本文讲解重命名SQLServer 数据库,包括物理文件名、逻辑文件名的改名
评论 0
收藏 0
赞 0
分享
SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)
昨天在项目中遇到了一个非常简单的问题,需要把SQL Server数据库中保存的一段路径地址取出其文件名,但SQL Server又没有现成的方法,最后在网上找到这样的一个方法,原理是先将字符串反转,取出第一个/的位置,从头进行截取后再次反转
评论 0
收藏 0
赞 0
分享
使用SqlBulkCopy时应注意Sqlserver表中使用缺省值的列
今天,想将以前做的一个程序增加点功能,原本就使用SqlBulkCopy批量、定时的从目录中的txt文件导入数据到Sqlserver中。以前一直都使用正常,但是不知怎的就老是出现一个错误
评论 0
收藏 0
赞 0
分享
Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法
讲解一下sql 2005日志怎么清理。一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
评论 0
收藏 0
赞 0
分享
SQL Server 2000 清理日志精品图文教程
SQL Server 2000 数据库日志太大!如何清理SQL Server 2000的日志呢
评论 0
收藏 0
赞 0
分享
SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
如何在SQL中对行进行动态编号,加行号这个问题,在数据库查询中,是经典的问题
评论 0
收藏 0
赞 0
分享
sql分类汇总及Select的自增长脚本
对错误信息进行分类汇总,并实现错误数据的自增长编号
评论 0
收藏 0
赞 0
分享
查看更多
网络赚钱
更多
揭秘朋友圈面膜:足不出户 国内生产俩月造出国际大牌
抢孩子谣言发布者究竟是谁?运营80余公众号造谣吸粉月赚20万
adsense西联邮局收款两张版本单子填写示例
Google Adsense西联汇款领取方式与流程,亲身实践
未来5大网络销售模式选哪种好?
Papi酱首次直播的八大平台是哪些 打赏90万服不服
站长故事
更多
木屋烧烤创始人自述:屌丝的逆袭开餐饮店 连锁餐饮成功的五个因素
站长故事 一位“苦逼站长”的心酸 SEO真的如此简单吗?
从事SEO行业五年:我已经正在慢慢的走向衰亡
那些跟马化腾一起创业的亿万富翁们
十年了!一个依靠设计师们热情支撑起的网站
我对互联网VC的10点看法 知己知彼百战不殆