MySQL知识学习——第十七天:组合查询

本文介绍了MySQL中如何使用UNION进行组合查询,包括从不同表获取相似结构数据和对同一表执行多条查询。UNION要求查询语句返回的列数和数据类型一致,并默认去除重复行。若需要保留重复行,可使用UNION ALL。同时,UNION后的查询结果可使用ORDER BY进行排序,但排序必须在最后一个SELECT语句后。端午节快乐!
摘要由CSDN通过智能技术生成

前言

端午节快乐呀~

组合查询

前面我们学习的都只有一条SELECT语句,其实MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并( union) 或复合查询(compound query)。

有两种基本情况,其中需要使用组合查询:
 在单个查询中从不同的表返回类似结构的数据;
 对单个表执行多个查询,按单个查询返回数据。

创建组合查询

组合查询我们借助UNION关键字来实现。

使用UNION

UNION的使用很简单。所需做的只是给出每条SELECT语句,在各条语句之间放上关键字UNION。我们来看下面的例子

比如我们想在表student中查询年龄大于18的记录
在这里插入图片描述
并且我们想从表student中查询班级是3班的记录
在这里插入图片描述
上面的两个查询,那么我们现在借助关键字UNION来实现组合查询
在这里插入图片描述
这样我们就得到了四条记录,它分别执行两条查询语句,然后把它们各自的结果组合起来得到一个新的结果集。(当然这样的效果我们也可以通过一条查询语句结合OR关键字来实现)。

需要注意的是,我们在借助关键字UNION组合查询语句A和B是,要保证查询语句A返回的记录的列数与查询语句B返回的记录的列数一致。

在这里插入图片描述
这样就是不对的,因为第一条查询返回三列,第二个只有一列。

同样的,多条查询语句的用法也是类似的。

UNION规则

关于UNION的用法,我们需要注意以下四点:

  1. UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。
  2. UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。
  3. 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)

包含或取消重复的行

这是什么意思呢?我们现在有一个查询语句A,它返回的记录分别是a,b,c,现有另一条查询语句B,它返回的记录分别是a,d,e,那么我们通过关键字UNION把它们组合查询后,返回的记录是什么样的呢?答案是a,b,c,d,e,为什么只有五条记录,而不是六条记录呢?因为a与a重复,UNION自动去掉重复的行,所以结果不是a,b,c,a,d,e。

那么我现在不需要你取消重复的行,我们就需要借助UNION ALL来实现。

在这里插入图片描述

对组合查询结果排序

SELECT语句的输出用ORDER BY子句排序。在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。

看下面的例子

在这里插入图片描述

我们要搞清楚执行的先后顺序,是先执行完组合查询后,再执行ORDER BY子句。

在这里插入图片描述

今天的内容比较简单,祝大家端午安康~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值