SQL UNION 操作符

本文详细介绍了SQL中的UNION和UNION ALL操作符的用法,包括它们的语法、如何处理重复数据以及如何结合WHERE子句进行筛选。通过具体实例展示了如何从不同表中合并数据,并对结果进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   UNION操作符用于合并两个或多个SELECT语句的结果集。

   注意,UNION内部的每个SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个SELECT语句的列的顺序必须相同。

 

SQL UNION 语法

 

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

注释:默认情况下,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL。

 

 

SQL UNION ALL 语法

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

注释:UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
 

 

演示数据库

 

SQL UNION 示例

   SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值)

 

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

   执行结果

 


  注释:UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

 

SQL UNION ALL 示例

  SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的country(也有重复的值)

 

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

  执行结果

 


 

带有 WHERE的 SQL UNION ALL

 

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;

  执行结果

 

 

笔记

 

select country from websites union select country from apps;

--连接两个表的查询结果集,重复的不显示

select country from websites union all select country from apps order by country;

--连接俩个个表的查询结果集,显示重复

select country,name from websites where country = 'CN' union all 

select country,app_name from apps where country='CN' order by name; 

--通过where条件查询的结果,连接连个表的结果集,并根据名字排序。

 

 

注意:

   使用UNION命令时需要注意,只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!绝对不能写两个ORDER BY命令。

   另外,在使用ORDER BY排序时,注意两个结果的别名保持一致,使用别名排序很方便。当然也可以使用列数。

 

参考:

https://www.yuque.com/docs/share/9e426c1e-ff2e-437b-83ee-74e041e5e3d9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值