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 UNION 实例

下面的SQL语句从“Websites”和“apps”表中选取所有不同的country(只有不同的值)。

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country; 

SQL UNION 运算符

注释:UNION 不能用于列出两个表中所有的country。只会选取不同的值。

 

SQL UNION ALL 实例

下面的SQL语句从“Websites”和“apps”表中选取所有的country(也有重复的值)。

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country; 

SQL UNION 运算符

 

带有 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; 

SQL UNION 运算符

 

上一篇:Redis数据库zset实现简单排行榜功能


下一篇:SQL UNION 用法