MySQL Union2025年3月17日 | 阅读 3 分钟 MySQL Union 是一个运算符,它允许我们将来自多个 SELECT 查询的结果合并到一个结果集中。它带有一个默认功能,可以从结果集中删除重复的行。MySQL 始终使用第一个 SELECT 语句中的列名作为结果集(输出)的列名。 MySQL Union 必须遵循以下基本规则
MySQL Union 语法以下是 MySQL 中 Union 运算符的语法 我们可以通过以下可视化表示来理解 Union 运算符 ![]() 在上图中,我们可以看到 Union 运算符删除了重复的行,只返回唯一的行。 Union 与 JoinUnion 和 Join 子句是不同的,因为 union 总是垂直地组合结果集,而 join 则水平地附加输出。我们可以通过以下可视化表示来理解它 ![]() MySQL Union 示例让我们创建两个表,看看 Union 运算符在 MySQL 中是如何工作的。 表:student1 ![]() 表:student2 ![]() 以下语句通过合并两个表,返回一个包含学生姓名和科目的结果集。当您执行此语句时,您会注意到,如果学生姓名和科目在两个表中具有相同的字段,那么每个字段将只列出一次。这是因为 Union 运算符只返回不同的值。 执行上述语句后,我们将得到以下输出。 ![]() 在上面的输出中,您可以看到 MySQL Union 使用结果集的列名标题与第一个 SELECT 语句的列名相同。有时您想用不同的标题更改输出列名的标题。我们可以通过在第一个 SELECT 语句中使用列别名来做到这一点。 以下示例更清楚地说明了这一点 它将给出以下输出,其中列名标题分别从“stud_name”更改为“student_name”和“subject”到“course”。 ![]() MySQL Union 与 ORDER BY如果您想使用 union 运算符对查询返回的结果进行排序,您需要在最后一个 SELECT 语句中使用 ORDER BY 子句。我们可以将每个 SQL SELECT 查询放在括号中,然后像下面的示例所示,在最后一个 SELECT 语句中使用 ORDER BY 子句 成功执行上述语句后,我们将得到以下输出,该输出根据获得的成绩按升序对学生姓名和科目进行排序 ![]() MySQL Union All此运算符通过将来自多个 SELECT 查询的两个或多个结果合并到一个结果集中来返回所有行。它不会从结果集中删除重复的行。 我们可以通过以下图形表示来理解它 ![]() Union 和 Union All 运算符之间的区别在于,“Union”将来自两个或多个表的所有不同行(消除重复行)返回到一个单一的输出中。相比之下,“Union All”返回所有行,包括重复的行。 语法 以下是 MySQL 中 Union 运算符的语法 示例 让我们以前面创建的表(student1 和 student2)为例,了解 Union All 运算符在 MySQL 中是如何工作的。 以下语句返回所有学生姓名、科目和成绩,包括单个结果中的所有重复行。它还使用 ORDER BY 子句根据获得的成绩按升序对学生姓名进行排序。 当您执行上述语句时,您将得到以下输出,该输出包含结果集中的所有重复行 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。