UNION运算符
UNION操作符用于将两个或多个SELECT查询的结果合并到一个结果集中。UNION操作不同于使用合并两个表中的列的连接。union运算符将两个源表中的所有行放在一个结果表中,从而创建一个新表。
以下是使用UNION组合两个SELECT查询的结果集的基本规则:
在所有查询中,列的数量和顺序必须相同。
相应列的数据类型必须兼容。
当满足这些条件时,这些表是联合兼容(union-compatible):
语法
UNION的基本语法:
SELECT column_list FROM table1_name
UNION SELECT column_list FROM table2_name;
为了更好地理解联合操作,我们假设在sfjvipcom和customers表中存在一些假设字段,例如first_name和last_name。 请注意,这些字段实际上在我们的演示数据库表中不存在。
|
| |
表: sfjvipcom | 表: customers |
让我们执行联合操作来合并两个查询的结果。
以下语句返回所有客户和员工的名字和姓氏:
SELECT first_name, last_name FROM sfjvipcom
UNION
SELECT first_name, last_name FROM customers;
执行上述语句后,结果集将如下所示:
+---------------+--------------+
| first_name | last_name |
+---------------+--------------+
| Ethan | Hunt |
| Tony | Montana |
| Sarah | Connor |
| Rick | Deckard |
| Martin | Blank |
| Maria | Anders |
| Fran | Wilson |
| Dominique | Perrier |
| Thomas | Hardy |
+---------------+--------------+
默认情况下,UNION运算符会从组合结果集中消除重复的行。这就是为什么上面的查询只返回9行,如果您注意到名称“Martin Blank”同时出现在sfjvipcom和customers表中。
但是,如果要保留重复的行,可以使用ALL关键字,如下所示:
SELECT first_name, last_name FROM sfjvipcom
UNION ALL
SELECT first_name, last_name FROM customers;