MySQL 自学笔记_Union(组合查询)
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(组合查询)的更多相关文章
- Python操作Mysql数据库——多表组合查询
前面我们介绍了单张表的查询,包括模糊查询.分组.排序.各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的 ...
- SQL 必知必会·笔记<12>组合查询
什么是组合查询 SQL 通过执行多个查询(多条SELECT 语句),并将结果作为一个查询结果集返回.这些组合查询通常称为并(union)或复合查询(compound query). 什么时候使用组合查 ...
- mysql学习笔记-- 多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- Mysql自学笔记
SQL(strucut query language) DDL (数据库定义语言)DML (数据库操作语言)DCL (数据库的控制语言)DTL (数据库的高级语言)查看版本的函数select vers ...
- MySQL自学笔记_联结(join)
1. 背景及原因 关系型数据库的一个基本原则是将不同细分数据放在单独的表中存储.这样做的好处是: 1).避免重复数据的出现 2).方便数据更新 3).避免创建重复数据时出错 例子: 有供应商信息和产 ...
- mysql学习笔记11_12(查询)
1.建表和插入值 创建company数据库 创建 department表 create table department(d_id int(10) primary key not null uniqu ...
- MySQL自学笔记_聚集函数
1. 使用场景 很多时候我们需要查找数据库中符合特定条件的数据的计数.最大值.最小值.平均值等一个数字,并需要要导出所有相关数据明细.此时就需要用到聚集函数. 而返回所有数据明细会占用数据库资源和网络 ...
- mysql学习 | LeetCode数据库简单查询练习
力扣:https://leetcode-cn.com/ 力扣网数据库练习:https://leetcode-cn.com/problemset/database/ 文章目录 175. 组合两个表 题解 ...
- 《mysql必知必会》笔记2(子查询、联接、组合查询、全文本搜索)
十四:使用子查询 1:子查询是嵌套在其他查询中的查询. 2:需要列出订购TNT2的所有客户信息,需要下面几步: a:从orderitems表中检索出包含物品TNT2的所有订单号: b:根据上一步得出的 ...
随机推荐
- CC20:高度最小的BST
题目 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树. 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度. 解法 这道题感觉如果没有创建树的 ...
- vue之webpack打包工具的使用
vue之webpack打包工具的使用 一.什么是webpack? webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个 ...
- BZOJ 1123 && Luogu P3469 [POI2008]BLO-Blockade 割点+乘法原理
想了半天式子...最后在邓大师的帮助下想出此题....QWQ我还是太菜了 对于一个非割点,ans+=2*(n-1); 对于一个割点,ans+= #include<cstdio> #incl ...
- js和jq中常见的各种位置距离之offset()和position()的区别(二)
offset()返回的是相对于当前文档的坐标,position()返回的是相对于其定位的祖辈元素的坐标. 使用position()方法时事实上是把该元素当绝对定位来处理,获取的是该元素相当于最近的一个 ...
- 简单记录下HTTPS中的SSL
大概思路 大概思路是混合加密的方式,即对称加密方式混合非对称加密方式. 非对称加密会更加安全,功能也更强大,但他复杂而且速度慢. 对称加密速度快,但要保证这个公共密钥的正确性和真实性. 所以两者结合, ...
- B -- RE:从零开始的异世界生活 线段树
http://www.ifrog.cc/acm/problem/1117?contest=1016&no=1 其实我是第一次这样用线段树. 首先把所有出现过的数字全部离散化.那么数字就是从[1 ...
- Jquery会死吗?我为什么不用vue写富文本!
一.事件背景: 我最近开源了一个个人耗时半年打造的富文本及一套适用于web后台的ui框架,在gitee上受到网友们的关注,部分网友对我采用jquery的技术栈提出了质疑.总结起来:无非是jquery已 ...
- 找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)
https://blog.csdn.net/liu1340308350/article/details/80746671
- 远程调试工具weinre使用教程
一:前言 我们都知道,chrome的开发者工具(f12)是一个方便我们调试PC页面的工具.但是现在我们的开发离不开移动端,那如果我们需要对手机页面进行调试,那该怎么办了? 当然,chrome的开发者工 ...
- volley框架下发送和读取cookie
首先volley本身不支持cookie,但是volley又非常好用(比如封装了网络请求的实现,内部支持并发, 不用我们再额外设计网络管理异步处理,网络请求不应在UI线程等等),那既想使用volley又 ...