MySQL UNION – 完整教程

什么是联盟?

联合将多个 SELECT 查询的结果合并为一个合并结果集。

要使其工作,唯一的要求是所有需要合并的 SELECT 查询的列数应该相同。

假设我们有如下两个表

MySQL UNIONMySQL UNION

现在让我们创建一个 UNION 查询来使用 DISTINCT 合并两个表

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

这里删除了重复的行并仅返回唯一的行。

联合-不同

请注意: MySQL 如果未指定任何内容,则执行 UNION 查询时默认使用 DISTINCT 子句。

现在让我们创建一个 UNION 查询来使用 ALL 合并两个表

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

这里包括重复的行,因为我们使用 ALL。

联盟

为什么要使用 Union?

假设您的数据库设计存在缺陷,并且您正在使用两个用于相同目的的不同表。您想将这两个表合并为一个,同时避免任何重复记录潜入新表。在这种情况下,您可以使用 UNION。

结语

  • UNION 命令用于将多个 SELECT 查询结果组合成一个包含所有选择查询的行的单个查询。
  • 列数和数据类型 SELECT 语句 必须相同才能使 UNION 命令起作用。
  • DISTINCT 子句用于从 UNION 查询结果集中消除重复值。 MySQL 如果未指定任何内容,则执行 UNION 查询时使用 DISTINCT 子句作为默认子句。
  • ALL 子句用于返回 UNION 查询中的所有行,甚至重复的行。

使用实例 MySQL 工作台

在我们的 myFlixDB 中让我们结合

来自“会员”表的 membership_number 和 full_names

-

电影表中的 movie_id 和 title

我们可以使用以下查询

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

在以下位置执行上述脚本 MySQL 工作台 针对 myflixdb 我们得到了以下显示的结果。

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men