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. 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)

    /* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...

  2. Mysql 5.7主主复制配置

    MySQL5.7主主复制配置 主机1IP:192.168.1.2主机2IP:192.168.1.4 一.首先安装MySQL 5.71.卸载两台主机系统中已经有的mysql相关软件包rpm -qa | ...

  3. slf4j日志整合框架的一些问题

    概述: 今天遇到一个问题,现在流程的形式,记录一下解法问题的一些过程, 你将收获解决常用包日志系统冲突的解决办法: Code 由于要使用log4j所以引入以下依赖 <!-- https://mv ...

  4. Django模板语言,标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  5. Spring中的注入方式 和使用的注解 详解

    注解:http://www.cnblogs.com/liangxiaofeng/p/6390868.html 注入方式:http://www.cnblogs.com/java-class/p/4727 ...

  6. OpenCV图像处理之 Mat 介绍

    我记得开始接触OpenCV就是因为一个算法里面需要2维动态数组,那时候看core这部分也算是走马观花吧,随着使用的增多,对Mat这个结构越来越喜爱,也觉得有必要温故而知新,于是这次再看看Mat. Ma ...

  7. Java 数字数组随机数工具类 NumberUtils、ArrayUtils、RandomUtils用法

    commons-lang3-3-3.8.1 //----------------------------------------------------------------------- /** ...

  8. SyntaxHighlighter

    SyntaxHighlighter uses separate syntax files called brushes to define its highlighting functionality ...

  9. java获取服务器一些信息的方法

    request.getServletContext().getRealPath("/") 获取项目所在服务器的全路径,如:D:\Program Files\apache-tomca ...

  10. React Router 4.0中文快速入门

    import React from 'react' import { BrowserRouter as Router, Route, Link } from 'react-router-dom' co ...