sql中exists,Intersect ,union 与union All的用法
2016-01-23 11:17
567 查看
熟练使用SQL Server中的各种用法会给查询带来很多方便。今天就介绍一下EXCEPT和INTERSECT。注意此语法仅在SQL Server 2005及以上版本支持。
EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。
就是两个集中不重复的部分。例如
SELECT * FROM
A
EXCEPT
SELECT * FROM B
这个的意思是,凡是不出现在B表中的A表的行
INTERSECT是指在两个集合中都存在的数据。
就是两个集中共同的部分。例如
SELECT * FROM
A
INTERSECT
SELECT * FROM B
这个的意思是,同时出现在A和B中的记录
测试如下:
[c-sharp] view plain copy
create table t1(id int,mark char(2))
go
create table t2(id int,mark char(2))
go
insert into t1
select 1,'t1' union all
select 2,'t2' union all
select 3,'t3' union all
select 4,'t4'
go
insert into t2
select 2,'t2' union all
select 3,'m3' union all
select 5,'m5' union all
select 6,'t6'
go
select * from t1
EXCEPT
select * from t2
go
select * from t1
INTERSECT
select * from t2
go
--EXCEPT结果集为
--1 t1
--3 t3
--4 t4
--INTERSECT结果集为
--2 t2
union 与union All的区别
--并集UNION
--UNION与UNION ALL的区别是: union会删除重复值,也就是说A和B中重复的行,最终只会出现一次,而union all则会保留重复行。
SELECT * FROM t1
UNION
SELECT * FROM t2
SELECT * FROM t1
UNION all
SELECT * FROM t2
EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。
就是两个集中不重复的部分。例如
SELECT * FROM
A
EXCEPT
SELECT * FROM B
这个的意思是,凡是不出现在B表中的A表的行
INTERSECT是指在两个集合中都存在的数据。
就是两个集中共同的部分。例如
SELECT * FROM
A
INTERSECT
SELECT * FROM B
这个的意思是,同时出现在A和B中的记录
测试如下:
[c-sharp] view plain copy
create table t1(id int,mark char(2))
go
create table t2(id int,mark char(2))
go
insert into t1
select 1,'t1' union all
select 2,'t2' union all
select 3,'t3' union all
select 4,'t4'
go
insert into t2
select 2,'t2' union all
select 3,'m3' union all
select 5,'m5' union all
select 6,'t6'
go
select * from t1
EXCEPT
select * from t2
go
select * from t1
INTERSECT
select * from t2
go
--EXCEPT结果集为
--1 t1
--3 t3
--4 t4
--INTERSECT结果集为
--2 t2
union 与union All的区别
--并集UNION
--UNION与UNION ALL的区别是: union会删除重复值,也就是说A和B中重复的行,最终只会出现一次,而union all则会保留重复行。
SELECT * FROM t1
UNION
SELECT * FROM t2
SELECT * FROM t1
UNION all
SELECT * FROM t2
相关文章推荐
- oracle 所有用户的表
- Windows系统mongoDB启动
- Redis高可用演进(一)
- Ubuntu 14.04数据库服务器--mysql的安装和配置
- Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例
- [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表
- crontab设置定时更新数据库
- Mysql的游标的定义使用及关闭深入分析
- mysql游标循环的使用
- SQL Server代理(3/12):代理警报和操作员
- MySQL游标的使用
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
- MySQL - 建库、建表、查询
- linux下的hiredis的安装和使用(一)
- mysql 分页性能优化
- MySQL加密函数
- MysqlHelper类
- Python之路【第十篇】Python操作Memcache、Redis、RabbitMQ、SQLAlchemy、
- mysql5.5.28.tar.gz编译安装操作笔记
- MySql安装问题,无法启用3306导致连接失败问题集和解决方法