UNION 和 UNION ALL

2023-05-16


UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复   union 是取唯一值,记录没有重复     

UNION 和 UNION ALL 的语法都是:
     [SQL 语句 1]
      UNION
     [SQL 语句 2]
效率:
UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。

2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。  

简单使用:

表一 test1

idname
1张三
2李四
3王五

表二 test2

idname
4小一
5小二
6小三

查询语句是这样的:

select id ,name from test1 
union select id, name from test 2  where id = 4
limit 1

这个sql的目的是,从两张表中,取出id = 4 的数据,如果有多条,只取一条。

但是查询结果是:

idname
1张三

经过分析发现,这条sql等效于下面:

select id ,name from test1 
union ( select id, name from test 2  where id = 4 )
limit 1

这条sql(下面这个),查询结果是:

select id ,name from test1 
 union (
 select id, name from test 2  where id = 4 )
idname
1张三
2李四
3王五
4小一

然后limit 1, 取出来的就是第一条,即张三-1

所以这条sql应该修改成下面:

第一种修改方式:

select id ,name from test1 where id = 4 
union select id, name from test 2  where id = 4 
limit 1


第二种修改方式:

select t.* from (
select id ,name from test1 
union select id, name from test 2 ) t where t.id = 4 
limit 1


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UNION 和 UNION ALL 的相关文章

  • 记一下 Java Static 有哪些玩法

    static 变量 static变量是使用 static关键字定义的变量 又被称为静态变量 静态变量是属于类的 也叫类变量 实例变量 非static变量 属于某个具体的对象 静态变量和非静态变量的区别 静态变量被所有对象共享 在内存中只有一
  • 怎么计算union和struct中字节数计算

    首先我的运行结果都是在64位系统的Xcode中运行的 然后 这个只是由于对于标准的位移量方法看得头疼 自己总结出来的 如果有错误或者不明欢迎留言 字节 一般成8位为一个字节 在Xcode中sizeof int 等于4 在这里也就采用int占
  • 如何在 mongoDB 中编写联合查询

    是否可以使用类似于 SQL 查询的 2 个或更多集合在 Mongo DB 中编写联合查询 我正在使用 spring mongo 模板 在我的用例中 我需要根据某些条件从 3 4 个集合中获取数据 我们可以通过一次操作实现这一目标吗 例如 我
  • 如何组合列数略有不同的多个表

    我有多个表 其中大约有 10 个公共列 但有些表有 1 2 个额外列 我想将所有这些表组合成一个表 每个表中的每一行都有一行 每个特定行的源表中不存在的任何列都具有 NULL 值 所以我的输入大致如下 table1 id colA colB
  • 每个派生表必须有自己的别名 - 来自组合降序 MySQL 的错误

    我想通过来自两个不同列的两个 strtotime 时间戳对一个 mysql 表进行排序 我有以下 mysql 命令 SELECT FROM SELECT 1 AS table vid req timestamp AS timestamp t
  • mysql联合结果中的错误列

    使用 union 时我得到了错误的列名称 这就是我所做的 我有两个非常大的表 具有相同的结构和不同的记录 所以就是这样 mysql gt select from e18 where 15 like car limit 1
  • PostgreSQL 视图在每次查询时都会重新创建吗?

    我正在创建一个网络应用程序 它具有一些复杂的底层关联 为了解决几个问题 我创建了一个 UNION 视图 可能还有很多其他方法可以解决这个问题 但我现在正在考虑我的设计效率 我想知道一个VIEW是每次查询时都是新创建的 还是只创建一次 并不断
  • 用于更新的 MySql UNION

    有没有办法使用单个 SQL 查询更新多行 每行具有不同的值 我必须用不同的数据更新多行中的一列 对每一行使用单独的更新查询似乎过多 因此如果可能的话 我希望将此过程合并到单个 SQL 语句中 或者至少减少所需的查询数量 我将 PHP 与 Z
  • 将两个结果集合并为一个

    我想知道是否有一种方法可以将两个或多个结果集合并为一个 我实际上需要执行多个查询并只返回一个结果集 我无法使用 UNION 或 JOIN 运算符 因为我正在使用 Cassandra CQL 提前致谢 Playorm 等框架为 Cassand
  • Oracle:合并两个具有不同列的表

    这是表1 col 1 col 2 date 1 1 3 2016 2 4 2015 这是表 2 col 3 col 4 date 2 5 8 2014 6 9 2012 我想要这样的结果 col 1 col 2 col 3 col 4 da
  • 如何对单个表进行 UNION?

    我需要仅显示居住在 Peters 或 Crows 大道的所有客户的姓名 地址和出生日期 这很好 我是这样做的 SELECT Customers FirstName Customers Surname Customers CustomerAd
  • 两个表的并集,但显示数据来自哪个表

    我有两张桌子 TABLE A TABLE B Fields Trans Amend Trans Amend data 100 0 100 0 100 1 110 0 120 0 120 1 130 0 130 0
  • 通过交集和并集组合 NSArray

    我有两个 NSArrays A 和 B 它们共享一些共同的元素 例如 A 1 2 3 4 5 B 4 5 6 7 我想创建一个新的 NSArray 其中包含两个 NSArray 之间常见的内容 并与第二个 NSArray 的内容相连接 同时
  • 如何将 SQL 查询与不同的表达式结合起来?

    我的三个查询已经达到了我的 SQL 知识的顶峰 Microsoft SQL 2005 如果这很重要 现在我需要将它们组合成一个查询 并将所有值放在一行上 我的实际查询如下 但我认为如果我在这里提供一个简单的版本会更容易 查询一 Provid
  • 带有 @MappedSuperclass 的 Hibernate TABLE_PER_CLASS 不会创建 UNION 查询

    我正在尝试创建一系列对象 这些对象全部存储在单独的表中 但所有这些表上都有一组共同的字段 我希望 Hibernate 对所有这些表进行 UNION 但不包括超类作为表 当我用以下方式注释超类时 MappedSuperclass Inheri
  • Mysql 联合时间 V.S.一对一单独查询[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我有 n 个查询 q1 q2 q
  • 在联合上分配泛型类型

    TS 中有没有办法通过联合 分布 泛型类型 type Container a value A type Containers a
  • javascript中的地理空间查询[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我进行地理空间查询 我知道 OpenLayers 和
  • 形成两个列表并集的最简单方法

    将两个列表 例如 A 和 B 的元素相互比较 并且仅当 A 中不存在时才将 B 中存在的元素添加到 A 中 最简单的方法是什么 为了显示 取列表 A 1 2 3 列表 B 3 4 5 所以在 AUB 手术之后我想要 列表 A 1 2 3 4
  • 这是 Oracle 可能的错误还是我遗漏了什么?

    数据库是 Oracle 10 2 0 1 0 64 位 在 Red Hat Enterprise Linux ES 第 4 版 Nahant 更新 8 上运行 在 SQL Plus 中 以下代码可以完美运行 var comment id n

随机推荐

  • PHP面试篇之基础0

    个人气场 技术实力 职业规划及贡献 1 深入理解PHP到底是什么 跨平台 xff08 window Linux Unix xff09 服务器端脚本语言 和apache配合方便 xff0c 性能很高因为PHP可以编译成apache模块 无须编
  • IT人士必备网站

    搜索网站 www 3bsou com www baigoogledu com 1 xff0c 免费动态域名申请 http www 3322 org 希网 http comexe cn 科迈 http www comexe cn http w
  • Mysql数据库数据类型详解

    MySQL的数据类型非常多 xff0c 选择正确的数据类型对于获得高性能至关重要 三大原则 xff1a 1 xff0c 更小的通常更好 xff0c 应该尽量使用可以正确存储数据的最小数据类型 2 xff0c 简单就好 xff0c 简单数据类
  • 符姓大全

    符蓉珊 符海瑛 符海英 符海瑛 符何瑛 符小菲 符睿智 符语嫣 符天翔 符天翔 符芮嘉 符文 符程 符自然 符李颜 符海瑛 符虹清 符天恩 符斌 符运波 符浩 符立 符若兮 符司晨 符尔岚 符若萱 符诗嘉 符思嘉 符斯嘉 符颖欣 符诗嘉 符
  • 什么是socket

    什么是网络套接字 xff08 Socket xff09 xff1f Socket是网络上两个程序双向通讯连接的端点 对于一个Socket而言 xff0c 它至少需要3个参数来指定 xff1a 1 xff09 通信的目的地址 xff1b 2
  • Samba服务安装

    Samba服务 xff08 共享文件 xff09 一 xff0c 安装1 apt get install samba2 apt get install samba common3 xff09 apt get install cifs uti
  • Ubuntu14配置nginx虚拟主机

    一 建立项目目录 在 home share 目录下创建一个test项目目录 xff0c 并编辑一个子目录 index php 文件 sudo mkdir p home share test 新建一个主页 index php文件 sudo v
  • 记忆方法

    数字编码联系法 xff1a 就是把数字 翻译 成编程 xff0c 然后用联想的方式把这些编程串连起来 xff0c 这就叫数字编码联系法 这种方法适用于临时记忆一些多位数字或数量不太大 xff0c 又不需长期保持记忆的数字 另外 xff0c
  • PHP 使用 file_get_contents 接收 POST 的資料

    一般接收 POST 资料都是使用 POST 这个变量 xff0c 但 POST 只能取得 Content type 為 application x www form urlencoded 或 multipart form data 的資料
  • 浮点数转成整型intval

    n 61 34 19 99 34 var dump intval n 100 int 1998 var dump strval n 100 string 4 34 1999 34 var dump intval strval n 100 i
  • 《硬件合集》Nvidia NX & Pixracer接线图 &电调调参 BLheliSuite

    Nvidia NX 1 针脚定义 2 电源接口关系图 3 使用技巧 值得一提的是 NX的针脚中ttyTHS0可以用作mavros的通信端口 xff0c 正好的Tx Rx串口通信 只需要交叉接线即可 xff0c 并每次运行时为该端口赋予sud
  • self :: 和 this-> 的用法

    在访问PHP类中的成员变量或方法时 xff0c 如果被引用的变量或者方法被声明成const xff08 定义常量 xff09 或者static xff08 声明静态 xff09 那么就必须使用操作符 反之如果被引用的变量或者方法没有被声明成
  • 程序是怎样运行的

    一 CPU的内部结构解析 1 程序运行流程 程序员用C语言等高级语言编写程序 int a a 61 1 43 2 printf 34 d 34 a 将程序编译后转换成机器语言的EXE文件 01000101000010111 00110100
  • 人性的弱点 --卡耐基

    自序 成就此书的因缘 和人类所具备的潜能相比 xff0c 我们仍处于蒙昧之中 人类的身心只有极小部分得到了发挥 广义而言 xff0c 人类个体远未到达极限 人类囿于自身习惯 xff0c 从未将与生俱来的诸多能力发挥至极致 本书 xff0c
  • git-flow分支模型

    分支模型 xff1a 用 git flow 初始化工程目录完成后 xff0c 只能看到两个分支 xff08 长期分支 xff09 xff1a master 分支 xff1a 用于上线的分支 xff0c 保护性分支 xff0c 只包含经过测试
  • MySQL show关键字用法

    SHOW DATABASES 列出 MySQL Server 上的数据库 SHOW TABLES FROM db name 列出数据库中的表 SHOW TABLE STATUS FROM db name 列出数据库的表信息 xff0c 比较
  • windows10共享文件夹挂载到Ubuntu

    程序开发人员一般都会把开发目录放在windows系统下 xff0c 开发环境却是linux 以前我是linux下文件挂载到windows xff0c 有同事前车之鉴 xff0c 万一虚拟机linux挂壁了 xff0c 很难恢复 现在准备把w
  • 闭包函数中use使用

    匿名函数中的use xff0c 其作用就是从父作用域继承变量 下例是最常见的用法 xff0c 如果不使用use xff0c 函数中将找不到变量 msg 1 2 3 4 5 6 7 8 lt php msg 61 1 2 3 func
  • for update秒杀

    Mysql InnoDB 排他锁 用法 xff1a select for update 例如 xff1a select from goods where id 61 1 for update 排他锁的申请前提 xff1a 没有线程对该结果集
  • UNION 和 UNION ALL

    UNION用的比较多union all是直接连接 xff0c 取到得是所有值 xff0c 记录可能有重复 union 是取唯一值 xff0c 记录没有重复 UNION 和 UNION ALL 的语法都是 xff1a SQL 语句 1 UNI