union all查询结果排序问题?
作者&投稿:展茜 (若有异议请与网页底部的电邮联系)
因为union all是将来年各个查询的结果集拼接在一起,
你如果在其中的一个查询中order by,没记错的话会语法错误,假设没语法错误的话,
只是对结果集的一部分进行排序,不能达到对整个结果集进行排序的效果,所以是没有意义的
如果你想实现对整个结果集进行排序的话,可以在外面order by :
select 你想要的字段
from (查询1 union all 查询2)
由于Union需要对查询结果集进行排序操作,当数据量较大时,若非特殊需要,尽量不要使用Union操作,用Union All操作,然后对Union All出来的结果执行去重操作即可,所以结果不一样-- union allselect '张三' nameunion allselect '李四' union allselect '王五' union allselect '王五' union allselect '苹果' addressunion allselect '香蕉' union allselect '橘子' -- result张三李四王五王五苹果香蕉橘子-- union select '张三' nameunion allselect '李四' union allselect '王五' union allselect '王五' union select '苹果' addressunion allselect '香蕉' union allselect '橘子' -- result李四苹果王五张三香蕉橘子
SELECT 省份 A,1 as X,品牌 B ,sum(数量) sl FROM adcsys1.TB_ZCL_ADC_ALL_partition
group by 省份,品牌
union all
SELECT 省份,2,系别,sum(数量) FROM adcsys1.TB_ZCL_ADC_ALL_partition
group by 省份,系别
order by X,A,B
欧萍亿恒: 展开全部 select * from ( select 字段,aDate mydate from A union all select 字段,bDate mydate from B ) a order by a.mydate这样试试
塔城市19690953416: mysql中怎么让union all不打乱顺序 - ?
欧萍亿恒: 在前面在加一列,然后把union all 的结果放到子查询中,用来排序比如: select * from (select 0+a ord,t.* from where a is not nullunion allselect 1+b ord,t.* from where a is not null ) ta order by ord
塔城市19690953416: sqlserver2005 查询有union all组成的表为什么union中的排序不起作用 - ?
欧萍亿恒: 因为union all是将来年各个查询的结果集拼接在一起, 你如果在其中的一个查询中order by,没记错的话会语法错误,假设没语法错误的话, 只是对结果集的一部分进行排序,不能达到对整个结果集进行排序的效果,所以是没有意义的 如果你想实现对整个结果集进行排序的话,可以在外面order by : select 你想要的字段 from (查询1 union all 查询2) order by 排序字段看了你的问题补充: 将order by [time] desc 放在ff后边就行啦
塔城市19690953416: sql 使用union后结果集排序,无法理解 - ?
欧萍亿恒: 由于Union需要对查询结果集进行排序操作,当数据量较大时,若非特殊需要,尽量不要使用Union操作,用Union All操作,然后对Union All出来的结果执行去重操作即可,所以结果不一样-- union all select '张三' name union all select '李四' union ...
塔城市19690953416: 联合查询的排序问题 - ?
欧萍亿恒: 要 UNION / UNION ALL 完了再排序?外面套一个查询,例如:SELECT * FROM(SELECT * FROM t1UNION ALL SELECT * FROM t2) a ORDER BY 1,2
塔城市19690953416: oracle 多个结果集union后保持各自原有排序 - ?
欧萍亿恒: 使用Union All就是能实现Oracle中Union与Union All的区别如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来.union和...
塔城市19690953416: 一个联合查询的排序问题 - ?
欧萍亿恒: select * from( select t1.id from (select id from test) t 1 unionselect t2.id from (select id from test1) t 2) A order by A.id
塔城市19690953416: 有UNION ALL的SQL怎样去做特定排序 - ?
欧萍亿恒: select * from ( select * from Table1 union all select * from Table2) as abc order by 字段
塔城市19690953416: 请问联合查询有什么注意事项? - ?
欧萍亿恒: 注意事项 联合查询时,查询结果的列标题为第一个查询语句的列标题.因此,要定义列标题必须在第一个查询语句中定义.要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号. 在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型.在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型. 在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序.例如: 查询1 UNION (查询2 UNION 查询3仅供参考 欢迎采纳 希望帮到你
塔城市19690953416: MySQl 使用union合并查询,排序被打乱了 - ?
欧萍亿恒: 用union all,union 会滤重并且排序 ,查询效率就低了