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不会对结果自动进行排序。
案例一:
从不同的表里面把字段名意义相同,但是名字不同的表的查询数据一起显示出来,
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不会对结果自动进行排序。
相关文章推荐
- CAS 登录成功后返回的值实现根据不同的条件查询不同的表或者数据库
- php中mysql一条sql语句查询出所有符合条件的数据,该怎么写?
- Mysql 左连接查询条件位置不同造成数据查不出来
- 使用 SQL 实现分季度查询汇总数据
- SQL SERVER 动态SQL实现 多条件查询数据
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
- 超长查询,不同的查询条件,不同的参数,查出来的数据放在一个临时表中的方法
- 当获取相似数据时,使用不同方法调用不同sp,但是使用同一个方法去用IIDataReader或者SqlDataReader读取数据时需要判断column name是否存在。
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第四部分 查询结果集中间n行数据)
- PL/SQL Developer 使用中文条件查询时无数据的解决方法(转)
- Sql Server 存储过程中查询数据无法使用 Union(All)
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- 在sql查询中使用表变量实现上一条下一条记录
- 在SQL的查询条件中使用case when取数据
- 如何编写一条SQL实现根据某个字段的条件对某个字段进行不同的update操作
- Hibernate使用原生的动态sql实现带条件的查询分页功能
- 营配数据质量核查,关于营销mis系统与配电gis系统里面的sql语句查询,做为积累使用,下次就不用重复写同样的语句了。
- 让存储过程中的查询语句按照不同查询条件进行优化(即每次查询都使用参数option(recompile))
- SQL查询分组后结果中某字段按照条件相加的实现