Oracle Union All 结果输出如何

Oracle Union All How are the results output

我们有一种情况,我们正在使用第 3 方工具 (jitterbit) 输出文件,我们需要该文件具有 header 行。所以我在想,我们可以在我们用来为文件生成数据的 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      

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

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;      

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

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

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;