前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL学习之组合查询(UNION)

SQL学习之组合查询(UNION)

作者头像
郑小超.
发布2018-01-24 15:17:00
1.3K0
发布2018-01-24 15:17:00
举报
文章被收录于专栏:GreenLeavesGreenLeaves

1、大多数的SQL查询只包含从一个或多个表中返回数据的单条SELECT语句,但是,SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并或复合查询。

主要有两种情况需要使用组合查询:

(1)在一个查询中从不同的表返回结构数据

(2)对一个执行多个查询,按一个查询返回数据

2、使用UNION

使用UNION很简单,所要做的只是给出每条SELECT语句,然后再每条SELECT语句之间加上UNION关键字,这样所给出的SELECT结果集就能组合成一个结果集并返回。代码如下:

select * from dbo.Customers_1

现在有个需求,需要检索出位于浙江和上海,或者顾客名称为Fun4All的所有顾客,下面是通过WhERE子句完成的解决代码:

select * 
from dbo.Customers_1 
where Province in('浙江','上海') or Company='Fun4All'

ok,通过Where子句的OR操作符完成需求!

下面通过组合查询UNION操作符来完成需求,代码如下:

select * 
from dbo.Customers_1 
where Province in('浙江','上海')
select * 
from dbo.Customers_1 
where Company='Fun4All'

这是没有使用UNION的单独查询,一共有6条记录,如果是普通的结果集组合的话会出现6条记录,我们发现其中有两条记录是重复的

image.png
image.png

在看使用了UNION组合查询关键字的查询解决代码:

select * 
from dbo.Customers_1 
where Province in('浙江','上海')
UNION 
select * 
from dbo.Customers_1 
where Company='Fun4All'

ok,完成需求,通过和上面没有使用UNION关键的分开查询相比,我们发现UNION(组合查询)从结果集中去除了重复的行。

这里我们可以使用UNION ALL,告诉DBMS不取消重复的行。那么效果就和上面没加UNION的一样

3、总结

分析上面完成需求的连个例子,我们发现对于上面的简单的例子使用UNION似乎比WHERE子句更加的复杂。但是这里你需要知道,如果对于较复杂的过滤条件,或者从多个表(而不是一个表)中检索数据的情形,使用UNION可能会使处理更加的简单。

4、使用UNION必须知道的规则(使用注意事项)

(1)使用UNION必须有两条或者两条以上的SELECT语句组成,语句之间用UNION关键字分割

(2)使用UNION关联的每个子查询必须包含相同的检索列、表达式或这聚集函数(次序可以不一样)

(3)列数据类型必须兼容;类型不必完全相同,但必须是DBMS可以隐含转换的类型(不同的数值类型或者不同的日期类型)

(4)UNION几乎总是完成与多个WHERE条件相同的工作,UNION ALL是UNION的一种形式,它完成WHERE子句完成不了的工作,因为他将返回每个条件的匹配行(包括重复行)

(5)使用组合查询,当需要对结果进行排序是,只能指定一条Order By语句,这条语句只能放在最后一天SELECT语句的后面.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档