当前位置:  开发笔记 > 编程语言 > 正文

在Firebird中组合UNION ALL和ORDER BY

如何解决《在Firebird中组合UNIONALL和ORDERBY》经验,为你挑选了3个好方法。

这是我第一次尝试回答我自己的问题,因为有人可能会碰到这个问题,所以它可能会有所帮助.使用Firebird,我想使用UNION ALL组合两个查询的结果,然后在给定列上对结果输出进行排序.就像是:

(select C1, C2, C3 from T1)
union all 
(select C1, C2, C3 from T2)
order by C3

括号来自其他数据库的有效语法,并且需要确保UNION ALL的参数(定义为对表有效的操作 - 即无序的记录集)不会尝试单独排序.但是我无法在Firebird中使用此语法 - 如何才能完成?



1> Cade Roux..:
SELECT C1, C2, C3
FROM (
    select C1, C2, C3 from T1
    union all 
    select C1, C2, C3 from T2
)
order by C3



2> Douglas Tosi..:

字段名称不必相等.这就是为什么你不能在订单中使用字段名称的原因.
您可以改用字段索引.如:

(select C1, C2, C3 from T1)
union all 
(select C7, C8, C9 from T2)
order by 3  



3> 小智..:

怎么样:

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by 2

至少在较新的Firebird版本中,如果您按"数字"而不是使用别名进行排序,则它可以工作.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有