Oracle Union All结果如何输出

时间:2016-03-01 19:06:09

标签: oracle union union-all

我们有一种情况,我们使用第三方工具(jitterbit)输出文件,我们需要文件有标题行。所以我想我们可以在Oracle视图中使用union all来生成文件的数据。

但我的问题是Oracle是否会首先阅读联盟的最高查询?

这将是我正在寻找的一个非常基本的例子

  select 'user.CustomAttribute.Client'
         ,'user.Email'
         ,'user.customAttribute.alternateEmail'
  from dual 
  UNION ALL 
  Select c.client 
         ,c.email
         ,c.alt_email
  from contact      

所有硬编码值的顶部部分总是先返回吗?

2 个答案:

答案 0 :(得分:2)

将其下推到子查询中并添加一列来管理您的显式排序

SELECT client, email, alt_email
FROM (
 select 'user.CustomAttribute.Client' client 
         ,'user.Email' email
         ,'user.customAttribute.alternateEmail' alt_email
          -- here we add an aid to ordering, 1 comes first
         , 1 displayorder
  from dual 
  UNION ALL 
  Select c.client 
         ,c.email
         ,c.alt_email
          -- here we add an aid to ordering, 2 comes after our header
         , 2 displayorder
  from contact    )
order by displayorder, client;

答案 1 :(得分:0)

在Oracle中,此类查询无法保证或没有默认顺序。但是,如果使用子查询,则可以管理所需的顺序,例如:

 select * from (select 'user.CustomAttribute.Client' as client 
     ,'user.Email' as email
     ,'user.customAttribute.alternateEmail' as alt_email
from dual 
UNION ALL 
Select c.client 
     ,c.email
     ,c.alt_email
from contact)
order by client, email, alt_email;      

请阅读此链接了解更多详情:https://community.oracle.com/thread/2341048?tstart=0