日期:2014-05-18  浏览次数:20636 次

如何查找两表之间ID不相同的数据
如何查找A表的ID在B表中没有和B表ID不在A表中的记录

A表:                      
ID     数据
1         123
2         343
3         565
........

B表:
ID     数据
2         242
3         123
4         345
........

------解决方案--------------------
drop table A,B
go

create table A(ID int,数据 varchar(10))
insert into A
select 1, '123 '
union all select 2, '343 '
union all select 3, '565 '

create table B(ID int,数据 varchar(10))
insert into B
select 2, '242 '
union all select 3, '123 '
union all select 4, '345 '

1.
select * from A
where not exists(select 1 from B where A.ID=B.ID)
/*
ID 数据
----------- ----------
1 123

(所影响的行数为 1 行)
*/

2.
select * from B
where not exists(select 1 from A where B.ID=A.ID)
/*
ID 数据
----------- ----------
4 345

(所影响的行数为 1 行)
*/
------解决方案--------------------
declare @A table (
ID int,
数据 int
)

declare @B table (
ID int,
数据 int
)
insert @A select
1, 123
union all select
2, 343
union all select
3, 565

insert @B select
2, 242
union all select
3, 123
union all select
4, 345

select * from @a a full join @b b
on a.id=b.id
where a.id is null or b.id is null

--结果
ID 数据 ID 数据
----------- ----------- ----------- -----------
NULL NULL 4 345
1 123 NULL NULL

(所影响的行数为 2 行)