SQLServer两张表筛选相同数据和不同数据
项⽬中经常会对两张数据库表的数据进⾏⽐较,选出相同的数据或者不同的数据。在SQL SERVER 2000中只能⽤Exists来判断,到了SQL SERVER 2005以后可以采⽤EXCEPT和INTERSECT运算符⽐较两张表的数据。
EXCEPT运算符返回由EXCEPT运算符左侧的查询返回、⽽⼜不包含在右侧查询所返回的值中的所有⾮重复值。
INTERSECT返回由INTERSECT运算符左侧和右侧的查询都返回的所有⾮重复值。
例如有表A和B,其建表和数据脚本如下:
if object_id('[a]') is not null drop table [a]
go
create table [a]([tel_no] bigint,[cost] int)
insert [a]
select 138********,38 union all
select 138********,56 union all
select 138********,88 union all
select 138********,28 union all
select 138********,18 union all
select 138********,68 union all
select 138********,98 union all
select 138********,35 union all
select 138********,31 union all
select 138********,32
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go
create table [b]([tel_no] bigint)
insert [b]
select 138******** union all
select 138******** union all
select 138******** union all
select 138********
现在要查出两张表相同的数据和两张表不同的数据,如果在SQL SERVER 2005以上版本:
--相同数据
sql语句怎么查询两张表的数据select tel_no
from a
intersect
select tel_no
from b
--不同数据
select tel_no
from b
except
select tel_no
from a
如果是SQL SERVER 2000
SELECT * FROM b WHERE EXISTS(SELECT 1 FROM a WHERE tel_l_no)
SELECT * FROM b WHERE NOT EXISTS(SELECT 1 FROM a WHERE tel_l_no)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论