1. Union查询简介

组合查询:有时在使用select语句进行数据查询时,想要将多个select语句在一个查询结果中输出,此时就需要使用Union关键字。

Union的使用方法:用union将多个select语句连接起来即可。例如:

所有男学生:

select stu_id, stu_grade, stu_sex
from students
where stu_sex = "male";

所有1年级学生:

select stu_id, stu_grade, stu_sex
from students
where stu_grade = 1;

将两个查询组合起来,只需用Union将两个查询语句简单组合即可。

select stu_id, stu_grade, stu_sex
from students
where stu_sex = "male"
union
select stu_id, stu_grade, stu_sex
from students
where grade = 1;

2. Union的使用规则

1). union中的每个查询语句必须包含相同的列、表达式或聚合函数。但是其出现顺序可以不同。

2). union的个select语句中的列的数据类型必须兼容:可以不必完全相同,但是要可以兼容。例如不同的日期类型。

3). union必须要有两个或两个以上的select语句。

3. Union 和 Union all

union默认会去除重复的行。即,在上面的例子中,同时满足两个条件的学生只会被返回一次。而不是在两个select字句各返回一次。

如果想要不去重,则需使用union all关键字。union all 的语句会返回1年级或者性别为男的学生。且同时满足两个条件的学生会被返回两次,即在每个select语句都会被查询并返回一次。

4. Union的结果的排序

组合查询结果的排序,order by字句要放在最后一个select 字句后面。不能对组合查询的各个select 字句单独排序,只能对所有union结果进行一次排序。例如:

select stu_name, stu_grade, stu_sex
from students
where stu_sex = "male"
union
select stu_name, stu_grade, stu_sex
from students
where stu_grade = 1
order by stu_name desc;

5. union并不是唯一方法

Union语句的效果也可以使用一个select 语句中的多个where 字句实现,如上面的例子:

select stu_name, stu_grade, stu_sex
from students
where
stu_grade = 1
or
stu_sex = "male";

上面语句的效果和union语句相同,都会对结果进行去重。

至于在实际使用场景中哪个会更简单,哪个运算速度更快,需要不断尝试,并无定论。

MySQL 自学笔记_Union(组合查询)的更多相关文章

  1. Python操作Mysql数据库——多表组合查询

    前面我们介绍了单张表的查询,包括模糊查询.分组.排序.各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的 ...

  2. SQL 必知必会·笔记<12>组合查询

    什么是组合查询 SQL 通过执行多个查询(多条SELECT 语句),并将结果作为一个查询结果集返回.这些组合查询通常称为并(union)或复合查询(compound query). 什么时候使用组合查 ...

  3. mysql学习笔记-- 多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  4. Mysql自学笔记

    SQL(strucut query language) DDL (数据库定义语言)DML (数据库操作语言)DCL (数据库的控制语言)DTL (数据库的高级语言)查看版本的函数select vers ...

  5. MySQL自学笔记_联结(join)

    1.  背景及原因 关系型数据库的一个基本原则是将不同细分数据放在单独的表中存储.这样做的好处是: 1).避免重复数据的出现 2).方便数据更新 3).避免创建重复数据时出错 例子: 有供应商信息和产 ...

  6. mysql学习笔记11_12(查询)

    1.建表和插入值 创建company数据库 创建 department表 create table department(d_id int(10) primary key not null uniqu ...

  7. MySQL自学笔记_聚集函数

    1. 使用场景 很多时候我们需要查找数据库中符合特定条件的数据的计数.最大值.最小值.平均值等一个数字,并需要要导出所有相关数据明细.此时就需要用到聚集函数. 而返回所有数据明细会占用数据库资源和网络 ...

  8. mysql学习 | LeetCode数据库简单查询练习

    力扣:https://leetcode-cn.com/ 力扣网数据库练习:https://leetcode-cn.com/problemset/database/ 文章目录 175. 组合两个表 题解 ...

  9. 《mysql必知必会》笔记2(子查询、联接、组合查询、全文本搜索)

    十四:使用子查询 1:子查询是嵌套在其他查询中的查询. 2:需要列出订购TNT2的所有客户信息,需要下面几步: a:从orderitems表中检索出包含物品TNT2的所有订单号: b:根据上一步得出的 ...

随机推荐

  1. Java - 一道关于整型和字符类型相加的题目

    题目 public class Test { public static void main(final String[] args) { final int a = 10; final int b ...

  2. 51nod1244 莫比乌斯函数之和 杜教筛

    虽然都写了,过也过了,还是觉得杜教筛的复杂度好玄学 设f*g=h,∑f=S, 则∑h=∑f(i)S(n/i下取整) 把i=1时单独拿出来,得到 S(n)=(∑h-∑2->n f(i)S(n/i下 ...

  3. GUI的最终选择 Tkinter(九):事件

    Tkinter事件处理 Tkinter应用会花费大部分的时间在处理事件循环中(通过mainloop()方法进入),事件可以是触发的鼠标,键盘的操作,管理窗口触发的重绘事件(在多数情况下都是有用户间接引 ...

  4. 038 Count and Say 数数并说

    数数并说序列是一个整数序列,第二项起每一项的值为对前一项的计数,其前五项如下:1.     12.     113.     214.     12115.     1112211 被读作 " ...

  5. MongoDB 最初级步骤

    对库TEST下的LOG聚集集合中的inserttim字段加索引 步骤(注意:前四步步骤不能错,错了不行): 一,打开F:\mongodb\bin\mongo.exe,也可以用cmd命令指到这个exe执 ...

  6. 滚动条插件mCustomScrollbar

    1. 参考网站 http://www.wufangbo.com/mcustomscrollbar/ 2. 使用方法

  7. Java学习知识体系大纲梳理

    感悟 很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛.博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都 ...

  8. 提升Java代码质量(二)

    Item5:消除过期对象的引用 JVM为我们实现了GC(垃圾回收)的功能,让我们从手工管理内存中解放了出来,这固然很好,但并不意味着我们就再也不需要去考虑内存管理的事情了;我们用简单的栈实现的例子来解 ...

  9. MapReduce的编程思想(1)

    MapReduce的编程思想(1) MapReduce的过程(2) 1. MapReduce采用分而治之的思想,将数据处理拆分为主要的Map(映射)与Reduce(化简)两步,MapReduce操作数 ...

  10. iOS开发 - Protocol协议及委托代理(Delegate)

    因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替.Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法.也就是说,它只告诉你要做什么,但具体怎 ...