SQL查询,两张表。一个为A。另一个B 。A包含B表所有的数据,B是新录入的数据。想与A核对录入数据是否正确

如题所述

select * from B
minus
select *from A
用minus 这个函数,它的作用是 把B表查询出来的结果减去A表查询出来的结果,如果B表查询出来的结果不在A表中存在 就会查询出来结果,说明查询出来的内容和A表内容不一致。
如果没有结果说明 B表内容和A表一样。(前提A表和B表结构一直)追问

两个表不一致

追答

两个表不一致,你肯定对比内容是要把可对比的字段相互对比
所以你可以把需要的字段查询出来对比

select B.b1, B.b2 from B
minus
select A.a1, A.a2 from A

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-02
如果在同一个数据库上的话楼上的用“减”的那个也行,如果b都在a表中就会没有记录。如果不在同一个库上,你可以试试这个方法。用外关联显示b表的全量,a表的相关量。假设A表在A库上,B表在B库上。(我在oracle上,语法大致相同):
select a.*,b.*
from tableA@dmB a,
tableB b
where a.关键字段 =b.关键字段(+)
这样子,b表的数据就会全部出来,而且a表中相同的也会出现,你看看吧。这个记录条数和b表中的应该的相同的。
第2个回答  2012-02-02
SQL语句的话:
INSERT A
select * from B
EXCEPT
SELECT * FROM A
go

用工具的话比较简单:VS2008里有一个专门的工具就是比较数据的。在顶端的菜单里,找 data -〉data compare,然后剩下就是指定两个表的名字之类。追问

我是在不同的数据库里的两张表

追答

那有什么难的,一样的。你加上数据库前缀。
比如数据库是test1,schema名是dbo,表名是B,
那么你写表名的时候就这样 [test1].[dbo].[B]
我说的那个工具也一样支持不同数据库的比较哦。

第3个回答  2012-02-02
可以用外连接统计一下所有AB表同时存在的数据量,再统计一下B表数据量,再查看一下是否有B表存在A表不存在的数据,应该就可以了。