SQL UNION 运算符
1. SQL UNION运算符
UNION运算符用于组合两个或更多SELECT语句的结果集,而不返回任何重复的行。
- UNION中的每个SELECT语句必须具有相同的列数
- 这些列必须有相似的数据类型
- 每个SELECT语句中的列顺序必须相同
- 每个SELECT语句必须有相同数目的列表达式
- 但每个SELECT语句长度不必相同
2. SQL UNION语法1
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
注释:默认情况下,UNION运算符选择一个不同的值。如果允许重复值,使用UNION ALL。
3. SQL UNION语法2
SELECT column_name(s) FROM table1 [WHERE condition] UNION SELECT column_name(s) FROM table2 [WHERE condition]
注释:UNION 结果集中的列名总是等于 UNION 中第一个SELECT 语句中的列名
4. SQL UNION ALL语法1
UNION ALL运算符用于组合两个SELECT语句(包括重复行)的结果。
适用于UNION子句的规则也适用于UNION ALL操作符。
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
5. SQL UNION ALL语法2
SELECT column_name(s) FROM table1 [WHERE condition] UNION ALL SELECT column_name(s) FROM table2 [WHERE condition]
6. 演示数据库
SQL UNION 实例
下面的SQL语句从“Websites”和“apps”表中选取所有不同的country(只有不同的值)。
SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country;
注释:UNION 不能用于列出两个表中所有的country。只会选取不同的值。
SQL UNION ALL 实例
下面的SQL语句从“Websites”和“apps”表中选取所有的country(也有重复的值)。
SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country;
带有 WHERE 的SQL UNION ALL
下面的 SQL 语句从"Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值):
SELECT country, name FROM Websites WHERE country='CN' UNION ALL SELECT country, app_name FROM apps WHERE country='CN' ORDER BY country;