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;
我们有一种情况,我们正在使用第 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;