zoukankan      html  css  js  c++  java
  • SQL语句中:UNION与UNION ALL的区别

    有些人看到题目,瞬间觉得楼主也太弱了吧,这种问题也要拿出来写,这种问题 随便会点sql 的人基本都会 

    Union   是会删除冗余数据

    Union ALL 不会删除冗余数据 将所有的结果都展现给用户

    好吧,这是二者的主要差别,对于一般人来说,知道这个也就足够了。如果较真的话,其实里边有很多细节,比如Union 如果删除冗余数据的话,那么请问最后保留的展示的数据时来源于未删除冗余的结果集中的第一条还是最后一条还是中间某一条。好吧,其实这个我也不清楚,不过感觉用处不大,此处忽略。

      此处 我只是写下我在尝试的时候,发现的一些细节:

    首先Union 会合并上边查询的所有结果集 和接下来的第一个结果集中的 重复数据

    如(1)

    SELECT 1 AS a 
    UNION  ALL
    SELECT 1 AS a 
    UNION  ALL
    SELECT 2 AS a
    UNION
    SELECT 1 AS a 
    则只会显示

    a

    1
    2

    (2)

    SELECT 1 AS a 
    UNION  ALL
    SELECT 1 AS a 
    UNION  ALL
    SELECT 2 AS a
    UNION
    SELECT 1 AS a 
    UNION  ALL
    SELECT 1 AS a

    如这一段代码 

    结果会显示

    a

    1
    2
    1

    为啥没有合并结果集呢  有两个1 呢, 因为按照执行顺序   最后一条的 SELECT 1 AS a 是不会被union作用到的  所以不会被筛选掉

    而如果这样

    (3)

    SELECT 1 AS a 
    UNION  ALL
    SELECT 1 AS a 
    UNION  ALL
    SELECT 2 AS a
    UNION
    (SELECT 1 AS a 
    UNION  ALL
    SELECT 1 AS a)

    结果就为

    a

    1
    2

    就会显示和(1)中一样的结果了

  • 相关阅读:
    团队开发中Git冲突解决
    Eclipse使用Git管理项目
    mapper.xml文件中标签不显示问题
    GO语言打包ICO图标
    如何创建 Visual Studio 2017 RC 离线安装包
    Redis系列-远程连接redis并给redis加锁
    Redis开启远程登录连接。
    Redis作为多个Windows服务运行配置方法
    Java课程设计---安装Mysql及管理工具
    Java多线程编程核心技术---多线程技能
  • 原文地址:https://www.cnblogs.com/jilodream/p/4219810.html
Copyright © 2011-2022 走看看