SQL UNION 操作符
SQL 操作符 union
2023-09-11 14:14:38 时间
SQL UNION 操作符
SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
SQL UNION 操作符
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 语句中的列名。
演示数据库
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
mysql> SELECT * FROM Websites; +----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
下面是 "apps" APP 的数据:
mysql> SELECT * FROM apps; +----+------------+-------------------------+---------+ | id | app_name | url | country | +----+------------+-------------------------+---------+ | 1 | QQ APP | http://im.qq.com/ | CN | | 2 | 微博 APP | http://weibo.com/ | CN | | 3 | 淘宝 APP | https://www.taobao.com/ | CN | +----+------------+-------------------------+---------+ 3 rows in set (0.00 sec)
SQL UNION 实例
下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):
实例
SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country;
执行以上 SQL 输出结果如下:
注释: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;
执行以上 SQL 输出结果如下:
带有 WHERE 的 SQL UNION ALL
下面的 SQL 语句使用 UNION ALL 从 "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 输出结果如下:
相关文章
- SQL Server如何查看SQL Server服务启动时间
- 解决开启SQL Server sql Always on Group 事务日志增大的问题
- is-a,has-a,like-a是什么 sql server中,N''表示什么意思? 关于SQL SERVER的N前缀的理解
- MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerable<T>数据源
- SQL案例分析-地铁换乘线路查询.sql
- 本人收藏的Sql server经典t-sql语句(备忘录,持续更新中)
- SQL服务无法启动,状态停留在“启动”错误代码126解决方法
- SQL中用一句sql语句将数据库中的两列值进行交换
- btslab全攻略——sql注入
- 大数据学习——面试用sql——累计报表
- PL/SQL DEVELOPER 导出表数 和 生成 执行快速 插入表的 sql
- SQL教程之 掌握 SQL GROUP BY 的 5 个实用 SQL 示例(含完整sql与测试数据)
- Sql Server 优化 SQL 查询:如何写出高性能SQL语句
- SQLSERVER SQL性能优化技巧
- 要提高SQL查询效率where语句条件的先后次序应如何写
- 浅析关于sql中like操作符的使用及效率问题及如何使用locate或position或instr函数进行优化
- Oracle442个应用场景---------PL/SQL基础
- 使用SQL脚本创建PowerDesigner Table
- 怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优
- SQL Server SSPI handshake failed报错,sql server修改windows账户密码的影响,sql server订阅发布客户端访问一直报错
- sql server存储引擎启动错误(SQL Server could not spawn FRunCM thread)
- sql-如何提高SQL查询的效率?
- SQL中常见的10个错误
- SQL UNION操作符
- SQL Server中用Case When Then多条件判断sql
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排序时,注意两个结果的别名保持一致,使用别名排序很方便。当然也可以使用列数。