MySQL数据库之联合查询 union

yizhihongxing

关于MySQL数据库的union联合查询,可分为以下几个步骤进行讲解:

1. union查询的基本语法

UNION语句用于合并来自两个或多个SELECT语句的结果集,但是每个SELECT语句返回的列数必须相等,而且列的数据类型必须相似。UNION语句会自动去除结果集中的重复记录,如果不想自动去重,可以使用UNION ALL语句。基本的语法如下:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

其中,column_name(s)应指定SELECT语句中需要选择的列名,table1和table2则是两个表格的名称,需要注意的是,union查询会以第一个SELECT语句的列名作为最终的列名出现在结果集中,所以列名的数量和名称要与第一个SELECT语句保持一致。

2. union查询的案例分析

  • 示例一

假设有两个表格,一个是消费者表格(consumer),一个是商品表格(goods),它们的结构如下所示:

消费者表格(consumer)
+-------+--------+---------+
| id    | name   | address |
+-------+--------+---------+
| 1     | Alice  | 北京     |
| 2     | Bob    | 上海     |
| 3     | Charlie| 广州     |
+-------+--------+---------+

商品表格(goods)
+-------+--------+---------+
| id    | name   | price   |
+-------+--------+---------+
| 1     | Apple  | 2.5     |
| 2     | Brownie| 5.2     |
| 3     | Cookie | 1.8     |
+-------+--------+---------+

现在要将这两个表格合并成一个结果集,获取所有的消费者名称和商品名称。合并的SQL语句如下:

SELECT name as consumer_name, '' as goods_name FROM consumer
UNION
SELECT '' as consumer_name, name as goods_name FROM goods;

该语句的执行结果如下所示:

+----------------+-----------+
| consumer_name  | goods_name|
+----------------+-----------+
| Alice          |           |
| Bob            |           |
| Charlie        |           |
|                | Apple     |
|                | Brownie   |
|                | Cookie    |
+----------------+-----------+

从上面的结果可以看出,两个表格的所有名称都被展示在了同一个结果集中。

  • 示例二

再假设现在有两个表格,一个是用户成绩表格(score),一个是社团活动表格(activity),它们的结构如下所示:

用户成绩表格(score)
+-------+------+--------+
| id    | math | english|
+-------+------+--------+
| 1     | 80   | 90     |
| 2     | 90   | 80     |
| 3     | 70   | 60     |
+-------+------+--------+

社团活动表格(activity)
+-------+-----------------+
| id    | club_name       |
+-------+-----------------+
| 1     | music           |
| 2     | drama           |
| 3     | sports          |
+-------+-----------------+

现在需要将这两个表格中的所有信息合并在一起,并按照每个用户的总成绩由大到小进行排序,合并的SQL语句如下:

SELECT id, math+english as total_score, '' as club_name FROM score
UNION
SELECT '' as id, '' as total_score, club_name as club_name FROM activity
ORDER BY total_score DESC;

该语句的执行结果如下所示:

+------+-------------+-------------+
| id   | total_score | club_name   |
+------+-------------+-------------+
| 2    | 170         |             |
| 1    | 170         |             |
|      |             | drama       |
|      |             | music       |
| 3    | 130         |             |
|      |             | sports      |
+------+-------------+-------------+

从上面的结果可以看出,两个表格中的信息合并在了一起,并按照总成绩由大到小进行排序,其中社团活动信息对应的列为空。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL数据库之联合查询 union - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL带你秒懂索引下推

    MySQL带你秒懂索引下推攻略 索引下推简介 索引下推是MySQL 5.6版本新增的特性,是MySQL优化查询速度的一种手段。它的基本原理是在执行SQL语句时,尽可能地利用索引来提高查询效率,减少全表扫描的需要。 索引下推的作用 索引下推可以减少MySQL查询语句所需要的IO开销和CPU开销。其实现原理是让MySQL尽可能地使用索引,避免对表所有的数据进行扫…

    database 2023年5月22日
    00
  • mysql 操作数据库基础详解

    MySQL 操作数据库基础详解 MySQL 是一种基于关系型数据库管理系统的开源软件。它能够提供数据存储、访问和管理的能力。MySQL 操作数据库有多种方式,包括使用命令行、使用图形用户界面和使用编程语言对数据库进行操作。在本文中,我们将介绍如何使用命令行方式操作 MySQL 数据库。 连接 MySQL 数据库 在进行任何操作之前,必须先连接到数据库。使用以…

    database 2023年5月22日
    00
  • SQL 计算非Null值的个数

    计算 SQL 表中非 Null 值的个数可以使用 COUNT 函数。COUNT 函数是 SQL 中最常用的聚合函数之一,它可以用来统计表中某列的数据个数。在计算非 Null 值的个数时,需要使用 COUNT 函数结合 IS NOT NULL 运算符来实现。下面是两个实例代码: 统计某一列中非 Null 值的个数 SELECT COUNT(column_nam…

    database 2023年3月27日
    00
  • centOS安装mysql5.7详细教程

    CentOS安装MySQL 5.7详细教程 本教程介绍CentOS系统下安装MySQL 5.7的详细步骤。 环境准备 在开始安装过程前,请确保你的CentOS系统已经安装了epel-release仓库和wget工具,如果没有,请先执行以下命令进行安装: sudo yum -y install epel-release wget 下载MySQL RPM包 访问…

    database 2023年5月22日
    00
  • 分享MySql8.0.19 安装采坑记录

    分享MySql8.0.19 安装采坑记录 前言 在安装MySql 8.0.19的过程中,我们可能会遇到各种各样的问题。在这篇文章中,我将会分享我在安装MySql 8.0.19中遇到的一些坑,并提供一些解决办法。 安装过程 下载安装包 首先,我们需要从MySql官网下载MySql版本为8.0.19的安装包。下载完后,我们将压缩文件解压到指定的文件夹中,并进入解…

    database 2023年5月22日
    00
  • Oracle SQL tuning 数据库优化步骤分享(图文教程)

    Oracle SQL tuning 数据库优化步骤分享(图文教程) 优化 SQL 查询是提高 Oracle 数据库性能的关键。本文将介绍一些常用的 SQL 优化步骤,帮助优化 SQL 查询,提高数据库的性能。 步骤 1:诊断 SQL 查询 在进行 SQL 优化之前,首先需要诊断 SQL 查询,确定查询的瓶颈所在。通常,可以使用 Oracle 自带的诊断工具,…

    database 2023年5月19日
    00
  • sql server编写archive通用模板脚本实现自动分批删除数据

    一、背景和目的SQL Server是微软的关系型数据库管理系统,使用广泛。随着数据量的增加,库中不少数据已经不再使用,但是不删除的话会影响数据库性能和运行效率。因此,分批删除数据是一种非常必要的操作。但是手动逐条删除非常麻烦,而且容易出错。本文将介绍如何编写SQL Server的archive通用模板脚本,实现自动删除数据的操作。 二、设计方案1. 批量删除…

    database 2023年5月21日
    00
  • MySQL死锁原因分析

    行级锁有三种模式: innodb 行级锁 record-level lock大致有三种:record lock, gap lock and Next-KeyLocks。 record lock  锁住某一行记录   gap lock     锁住某一段范围中的记录  next key lock 是前两者效果的叠加。   问题: 行级锁表现形式:next-ke…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部