提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
最近有使用到把几张数据库结果集拼起来,用到了union,简要记录一下
一、union和union all的区别?
union、union all 都可以把多个数据库查询结果集拼接起来,结果集需要需要有相同的字段、相同的列数、相同的数据结构。
union 过滤了相同的数据(相当于去重)
union all 则保留了原始数据
二、union/union all 使用order by失败
1.拼接两个结果集使用排序失效
求员工工资排序,最后求和
代码如下(示例):
(select id,name,salary from A order by salary)
union all
(select '' as id,'总计' as name,sum(salary) as salary from A)
运行结果发现:在最终查询的结果中,事先定义好的排序失效了。
上网查了一下资料发现,union和order by 一起用是会导致排序失效的问题
解决方案:在子查询中使用limit
2.Incorrect usage of UNION and ORDER BY
解决:给每个子查询加上括号
总结
使用union时,要注意语法。在order by 失效时,可以在子查询中加上limit。也可以在总的查询中最后再排序,具体的使用场景根据业务来看。
本文详细解析了SQL中Union与Union All的区别,并针对使用这两个关键字时遇到的OrderBy失效问题提供了有效的解决方案。通过实例展示了如何避免排序失效,以及如何正确地进行结果集的拼接与排序。
1226

被折叠的 条评论
为什么被折叠?



