zoukankan      html  css  js  c++  java
  • SQL中 UNION 和 UNION ALL 操作符小结

    SQL中 UNIONUNION ALL 操作符小结
    
    1UNIONUNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集【适用场景】
    2UNIONUNION ALL 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型,即数据类型必须兼容。同时,每条 SELECT 语句中的列的顺序必须相同。
    3UNIONUNION ALL 结果集中的列名总是等于 UNION(ALL)中第一个 SELECT 语句中的列名
    4UNIONUNION ALL 这两者从使用和效率上来说都有所不同。如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all
       1)对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录
       2)对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回
       3)从效率上说: UNION ALL 要比 UNION 快很多
    5UNION 其实执行的实质逻辑应该是先将某一子结果集进行排序,然后再判断是否有重复的数据,若有则删除掉重复的数据
    
    简单总结: UNION 对两个结果集进行并集操作,不包括重复行去重,同时进行默认规则的排序
              UNION ALL 对两个结果集进行并集操作,包括重复行,不进行排序; 
              
              由于Union需要对查询结果集进行排序操作,当数据量较大时,若非特殊需要,尽量不要使用Union操作,而改用Union All操作,
              然后对Union All出来的结果执行去重操作即可,这样会使得查询的效率大大的增强

    注意:bolb类型,oracle union查询中BLOB字段出错问题(谢谢网友moon的补充

         select blobf from table1

         union

        select blobf from table2
       出错:ora-00932:数据类型不一致
        因为:union会对字段类型进行比较(相等和不等判断),oracle不支持对大数据类型的比较操作。 
        解决办法:使用union all就可以了




  • 相关阅读:
    Putty·Network error:Software caused connection abort
    VSCode·搭建Java开发环境
    MSSQL·将一对多的数据合并为以指定分隔符的数据
    技能Get·Windows10将任何格式文件固定到开始屏幕
    MSSQL·查询TSQL语句执行时间的三种方法
    Javac·编码GBK的不可映射字符
    傅里叶变换、拉氏变换、z变换的含义
    宏、内联函数和普通函数的区别
    OpenGL中创建GLUT菜单
    在PC安裝Android系統+軟體
  • 原文地址:https://www.cnblogs.com/gqs92/p/6767193.html
Copyright © 2011-2022 走看看