表间对比SQL语句
先有2表数据如下 
 表1: 
 A               B               C               D                     X 
 甲         200            500         1380            A 
 乙         320            270         2260            A 
 丙         280            477         1960            B 
 表2: 
 A               B               C               D                     X 
 甲         360            420         1060            A 
 乙         330            680         1270            A 
 丁         750            350         820               A   
 A为关键字段 
 求几条语句分别达到如下效果: 
 1、筛选出表1中有而表2中没有的数据 
 2、筛选出表1、表2中都包含的数据 
 3、筛选出表2中有表1中没有,且X项为A的数据
------解决方案--------------------select 
     t.* 
 from 
     表1 t 
 where 
     not exists(select 1 from 表2 where A=t.A)   
 select 
     t.* 
 from 
     表1 t 
 where 
     exists(select 1 from 表2 where A=t.A)   
 select 
     t.* 
 from 
     表2 t 
 where 
     t.X= 'A '  
     and 
     not exists(select 1 from 表1 where A=t.A)
------解决方案--------------------  create table 表1(A  varchar(10),   B  int,   C  int,   D  int,     X varchar(10)) 
 insert 表1 select  '甲 ',   200,    500,   1380,     'A ' 
 union all select  '乙 ',   320,    270,   2260,     'A ' 
 union all select  '丙 ',   280,    477,   1960,     'B '   
 create table 表2(A  varchar(10),   B  int,   C  int,   D  int,     X varchar(10)) 
 insert 表2 select  '甲 ',   360,    420,   1060,    'A ' 
 union all select  '乙 ',   330,    680,   1270,     'A ' 
 union all select  '丁 ',   750,    350,   820,      'A '   
 --就是不喜欢和别人一样 
 --1、筛选出表1中有而表2中没有的数据 
 select * from 表1 a where  
 (select count(1) from 表1 left join 表2 on 表1.a <> 表2.a where 表1.a=a.a) 
 =(select count(1)from 表2) 
 --2、筛选出表1、表2中都包含的数据 
 select * from 表1 join 表2 on 表1.a=表2.a 
 --3、筛选出表2中有表1中没有,且X项为A的数据 
 select * from 表2 a where  
 (select count(1) from 表2 left join 表1 on 表2.a <> 表1.a and 表2.x= 'A ' where 表2.a=a.a) 
 =(select count(1)from 表1)