• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > union组合结果集时的order问题

union组合结果集时的order问题

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了union,结果集,order问题等相关知识,希望本文的分享对您有所帮助

如果能确定各查询结果不会有重复的项,最好就带上all,因为这样还是可以提高一些效率的。

近日,在一个项目中用到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,因为这样还是可以提高一些效率的。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL union 语法代码示例分析
  • mySQL UNION运算符的默认规则研究
  • mysql --- union
  • SQL语句的MINUS,INTERSECT和UNION ALL的解析
  • 使用union和in哪个效率高
  • MySQL组合查询中UNION排序规则示例
  • MySQL5.7中union all用法的黑科技的图文代码介绍
  • mysql merge union merge sort_union 的不同
  • MySQL中Union子句不支持order by的解决方法_MySQL
  • MySQL数据检索+查询+全文本搜索_MySQL

相关文章

  • 2018-12-05MySQL常见SQL语句使用方法总结
  • 2018-12-05存储过程的输出参数,返回值与结果集
  • 2017-05-11探究MySQL中varchar的定义长度
  • 2018-12-05SQL Server中的XML数据进行insert、update、delete操作实现代码
  • 2018-12-05MYSQL经典语句大全——基础篇
  • 2018-12-05SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • 2018-12-05MySQL服务器默认安装之后调节性能的方法
  • 2018-12-05mysql 读写分离(实战篇)
  • 2017-05-11Mysql select语句设置默认值的方法
  • 2018-12-05mysql中的引擎

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL的Data_ADD函数与日期格式化函数说明
    • mssql2008 自定义表类型实现(批量插入或者修改)
    • sqlserver 三种分页方式性能比较[图文]
    • 检查并修复mysql数据库表的具体方法
    • 浅谈MySQL漂流记(五)
    • 超详细mysql left join,right join,inner join用法分析
    • Python连接mysql数据库
    • Linux mysql命令安装允许远程连接的安装设置方法
    • 数据库 日期加减处理
    • MySQL两种引擎的有什么区别

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有