您的位置:首页 > 数据库

Union all的使用实现一条sql把不同表里面的数据查出来,或者按照不同的查询条件查出来的sql累加起来

2013-07-27 23:48 971 查看
Union all的使用实现一条sql把不同表里面的数据查出来,或者按照不同的查询条件查出来的sql累加起来,如果不用union all我们只能通过程序去实现,而且需要多次和数据库的交互查询,效率低。

案例一:

从不同的表里面把字段名意义相同,但是名字不同的表的查询数据一起显示出来,

SELECT C_FUNC_ID, C_MODULE, TRX_AMT FROM (SELECT C_FUNC_ID AS C_FUNC_ID, C_MODULEAS C_MODULE,LC_AMT ASTRX_AMT FROM t able1 WHERE
C_MAIN_REF='IPLCXXXX' ORDER BYI_EVENT_TIME)

UNION ALL

SELECT C_FUNC_ID, C_MODULE, TRX_AMTFROM (SELECT C_FUNC_ID AS C_FUNC_ID, C_MODULE ASC_MODULE,
GTEE_AMT AS TRX_AMT FROM table2 WHERE C_IPLC_MAIN_REF='IPLCXXXX'ORDER BY I_EVENT_TIME)

案例二:

把一张表里面根据不同的条件,不同的排序规则进行查询数据

select D_LOGIN_TIME from (

select D_LOGIN_TIME from table1 where D_LOGIN_TIME >TO_DATE('2012-05-03','YYYY-MM-DD') ORDER BY D_LOGIN_TIME-SYSDATE DESC) union all

select D_LOGIN_TIME from (

select D_LOGIN_TIME from table1 where D_LOGIN_TIME <TO_DATE('2012-05-03','YYYY-MM-DD') ORDER BY D_LOGIN_TIME DESC);

需要注意的是:

Union和Union All的区别之一在于对重复结果的处理。

对于UNION来说,交换两个SELECT语句的顺序后结果仍然是一样的,这是因为UNION会自动排序。而UNION
ALL在交换了SELECT语句的顺序后结果则不相同,因为UNION ALL不会对结果自动进行排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐