1. 概述
在MySQL中,UNION是一种组合查询(也称为合并查询),它可以将两个或多个SELECT语句的结果集合并为一个结果集,并去除其中的重复记录行。UNION操作只能应用于SELECT语句。
2. UNION用法
2.1 UNION基本语法
UNION操作的基本语法如下:
SELECT column1, column2, ... FROM table1
UNION
SELECT column1, column2, ... FROM table2;
其中,两个SELECT语句的列数必须相等,每个SELECT语句的结果集中的列类型必须兼容(如果不兼容,MySQL会自动进行类型转换),并且每个SELECT语句必须返回相同数量和类型的列。
2.2 UNION的例子
下面是一个使用UNION的例子,它会将两个表worker和employee中的姓名和薪水列合并为一个结果集,并去除其中的重复记录行。
SELECT name, salary FROM worker
UNION
SELECT name, salary FROM employee
ORDER BY salary DESC;
该查询将返回工人和员工的姓名和薪水,按薪水从高到低排序。
3. UNION的注意事项
3.1 UNION去重
UNION操作会去除结果集中的重复记录行,这意味着如果两个SELECT语句返回的结果集中存在相同的记录行,那么只会保留一个。
如果想要保留所有记录行,包括重复记录行,则可以使用UNION ALL操作,UNION ALL不会执行去重操作,而直接将两个结果集合并为一个。
3.2 UNION的列顺序
UNION操作合并两个SELECT语句的结果集时,列的顺序由第一个SELECT语句中的列决定。
如果第一个SELECT语句中的列顺序与第二个SELECT语句中的列顺序不同,则需要在第二个SELECT语句中使用AS子句来指定列的别名,以使得两个SELECT语句的列顺序相同。
3.3 UNION的列类型
在使用UNION操作合并结果集时,每个SELECT语句返回的列类型必须兼容,否则MySQL会自动进行类型转换。
如果无法进行自动类型转换,则会返回错误。
4. 总结
本文介绍了MySQL中UNION的用法,包括基本语法、例子和注意事项。
UNION操作是一种非常有用的工具,可以将两个或多个SELECT语句的结果集合并为一个结果集,并去除其中的重复记录行。