MySQL - Union 语句

MySQL - Union 语句 首页 / MySQL入门教程 / MySQL - Union 语句

MySQL Union是一种运算符,它使无涯教程可以将来自多个SELECT查询的两个或多个结果组合到单个结果集中。它具有默认函数,该函数可从结果集中删除重复行。 MySQL总是在第一个SELECT语句中使用列名,这将是结果集(输出)的列名。

MySQL Union必须遵循以下基本规则:

  • 要使用的所有表中列的数量和顺序应相同。
  • 数据类型必须与每个选择查询的相应位置兼容。
  • 在不同的SELECT查询中选择的列名必须具有相同的顺序。

Union语法

以下是MySQL中的Union运算符的语法:

SELECT column_list FROM table1
UNION
SELECT column_list FROM table2;

无涯教程可以通过以下直观表示来理解Union运算符:

MySQL Union

在上图中,可以看到Union运算符删除了重复的行并仅返回唯一的行。

Union与Join

Union和Join子句是不同的,因为Union总是将结果集垂直组合在一起,而Join将输出水平附加。无涯教程可以通过以下视觉表示理解它:

MySQL Union

MySQL Union示例

让无涯教程创建两个表,看看Union运算符如何在MySQL中工作。

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-union.html

来源:LearnFk无涯教程网

表格:student1

MySQL Union

表格:student2

MySQL Union

以下语句通过组合两个表来返回包含stud_namesubject的结果集。当您执行此语句时,您会注意到,如果两个表中的学生姓名和科目具有相同的字段,则每个学生名将被列出一次。这是因为Union运算符仅返回不同的值。

SELECT stud_name, subject FROM student1
UNION
SELECT stud_name, subject FROM student2;

执行完上面的语句后,无涯教程将得到以下输出。

无涯教程网

MySQL Union

有时您想用另一个标题来更改输出的列名的标题。无涯教程可以通过在第一个SELECT语句中显式使用 alias 列来实现。

以下示例对其进行了更清晰的说明:

SELECT stud_name AS student_name, subject AS course FROM student1
UNION
SELECT stud_name, subject FROM student2;

列名的标题从" stud_name "更改为" student_name ",将" subject "更改为" course"。

MySQL Union

与ORDER BY的结合

如果要使用联合运算符对查询返回的结果进行排序,则需要在最后一个SELECT语句中使用ORDER BY子句。无涯教程可以在括号中放置每个 SQL SELECT查询,然后使用 ORDER BY子句在最后一个SELECT语句中,如以下示例所示:

(SELECT stud_name, subject, marks FROM students)
UNION
(SELECT stud_name, subject, marks FROM student2)
ORDER BY marks;

成功执行上述语句后,无涯教程将获得以下输出,该输出根据获得的分数将学生姓名和学科按升序排序:

MySQL Union

MySQL Union ALL

该运算符通过将来自多个SELECT查询的两个或多个结果组合到一个结果集中来返回所有行。它不会从结果集中删除重复的行。

无涯教程可以通过以下图形表示来理解它:

MySQL Union

Union和Union All运算符之间的区别在于," Union"将来自两个或更多表的所有不同行(消除重复行)返回到单个输出中。相反,"Union ALL"返回所有行,包括重复的行。

以下是MySQL中的Union运算符的语法:

SELECT column_list FROM table1
UNION ALL
SELECT column_list FROM table2;

示例

让无涯教程看一下先前创建的表(student1和student2),并了解Union All运算符如何在MySQL中工作。

以下语句返回所有学生的姓名,科目和成绩,包括单个结果中所有重复的行。它还根据使用ORDER BY子句获得的分数以升序对学生姓名进行排序。

(SELECT stud_name, subject, marks FROM students)
UNION ALL
(SELECT stud_name, subject, marks FROM student2)
ORDER BY marks;

执行上述语句时,将获得以下输出,其中包含结果集中存在的所有重复行:

MySQL Union

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构实战160讲 -〔杨波〕

Go语言核心36讲 -〔郝林〕

玩转webpack -〔程柳锋〕

.NET Core开发实战 -〔肖伟宇〕

动态规划面试宝典 -〔卢誉声〕

如何读懂一首诗 -〔王天博〕

人人都用得上的数字化思维课 -〔付晓岩〕

超级访谈:对话玉伯 -〔玉伯〕

超级访谈:对话道哥 -〔吴翰清(道哥)〕

好记忆不如烂笔头。留下您的足迹吧 :)