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 的相关文章

  • mysql联合结果中的错误列

    使用 union 时我得到了错误的列名称 这就是我所做的 我有两个非常大的表 具有相同的结构和不同的记录 所以就是这样 mysql gt select from e18 where 15 like car limit 1
  • 从 MySQL 中的两个表中选择数据

    我拥有的 下一个结构 表零 gt id 主要具有自动增量 gt 其他 table 1 gt id 表零 id 的外键 gt varchar 80 示例值 aahellobbb gt 一个字段 table 2 gt id 表零 id 的外键
  • MySQL:合并两个不同的表,无需 JOIN 或 UNION

    我需要合并两个表 两者都有一个主键列日期 但具有不同的值 不同的时间间隔 两者都有不同的 未知 列 我不知道列的名称 两个表中可能出现相同的列名 我不知道有多少列 但都是相同的类型 一个例子 table1 date colA colB co
  • 序列化ctype联合

    有没有办法序列化 ctype 联合以便通过套接字发送它们 我试图通过套接字将联合发送到网络服务器 但我无法序列化数据 而是作为联合对象的实例发送 是否可以使用 Python Struct 库来执行此操作 我不相信它支持联合 任何帮助深表感谢
  • 查找多个重叠矩形的并集 - OpenCV python

    我有几个包含单个对象的重叠边界框 但它们在某些地方重叠最少 作为一个整体 它们包含了整个对象 但是 openCV 的 groupRectangles 函数不会返回包含该对象的框 我拥有的边界框以蓝色显示 我想要返回的边界框在这里以红色显示
  • Oracle 使用 UNION ALL 语句 FETCH FIRST 1 ROW

    我正在尝试使用 FETCH FIRST 1 ROW 在 SQL 中创建 UNION ALL 语句 但是当我这样做时 它给了我一个错误MISSING KEYWORD 我的 SQL 如下所示 Select From tabl1 where Da
  • C# 最快的 2 组排序值并集

    合并两组排序值的最快方法是什么 速度 big O 在这里很重要 不清楚 假设这已经被执行了数百万次 假设您不知道值的类型或范围 但有一个有效的方法IComparer
  • 如何在不排序的情况下执行UNION? (SQL)

    UNION连接两个结果并删除重复项 同时UNION ALL不删除重复项 UNION并对最终输出进行排序 我想要的是UNION ALL没有重复 也没有排序 那可能吗 这样做的原因是我希望第一个查询的结果位于最终结果的顶部 第二个查询位于底部
  • 带 order by 和 limit 的 SQL Union All (Postgresql)

    在以下查询中我收到语法错误 SELECT
  • phpMyAdmin 对我的 UNION ALL 查询做了什么?

    以下查询返回 1 行 SELECT coach id FROM table a WHERE coach id 8 UNION ALL SELECT coach id FROM table b WHERE coach id 8 But SEL
  • 两个表的并集,但显示数据来自哪个表

    我有两张桌子 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
  • Rails 3 ActiveRecord:UNION

    有没有办法在 Rails 3 中使用 MySQL UNION 我认为让其工作的唯一方法是直接执行查询 ActiveRecord Base connection execute SELECT REPEAT a 1 UNION SELECT R
  • 在联合上分配泛型类型

    TS 中有没有办法通过联合 分布 泛型类型 type Container a value A type Containers a
  • 这是 Oracle 可能的错误还是我遗漏了什么?

    数据库是 Oracle 10 2 0 1 0 64 位 在 Red Hat Enterprise Linux ES 第 4 版 Nahant 更新 8 上运行 在 SQL Plus 中 以下代码可以完美运行 var comment id n
  • Typescript:理解并集和交集类型

    我试图在打字稿中获得关于并集和交集类型的直觉 但我无法弄清楚这种情况 interface A a number interface B b boolean type UnionCombinedType A B type Intersecti
  • mysql 在 sum() 函数上使用 concat,例如 concat(sum(col1),"%")

    我正在尝试合并多个查询 但其中一个查询使用 sum 当我尝试在此列上应用 concat 时 我得到不需要的 blob 结果 我如何在聚合列上应用 concat 和 union 我期待这个结果 SELECT row 1 col1 UNION
  • 将两个表合并为一个输出

    假设我有两张表 已知营业时间 ChargeNum CategoryID Month Hours 111111 1 2 1 09 10 111111 1 3 1 09 30 111111 1 4 1 09 50 222222 1 3 1 09
  • 如何在 Laravel 中编写联合查询?

    我正在使用 laravel 5 0 并且我有 mysql 查询 SELECT surat masuk id surat surat masuk nomor surat FROM surat masuk WHERE EXISTS SELECT
  • MySQL - 如何将列逆透视到行?

    ID a b c 1 a1 b1 c1 2 a2 b2 c2 如何将行重新组织为ID columntitle value 1 a1 a 1 b1 b 1 c1 c 2 a2 a 2 b2 b 2 c2 c 你正在尝试unpivot数据 My
  • 范围联合无序

    我正在尝试按特定顺序复制各种范围 然后将它们从工作簿粘贴到不同的工作簿中 现在 我已经设置了范围 例如 Set rg ws1 Range A2 A i Offset rowOffset 1 columnOffset 0 Set rg1 ws

随机推荐

  • 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