两个数据库中各有一张数据结构、字段相同的表,但表的数据记录略有不同,怎样比较出重复数据并显示?

db.A test 与db.B test 分别包含字段id、name、bm、xb、zz字段。A库表中的数据id、name、bm不允许重复,但B库中各字段没有这一限制。怎样比较出B库中比A库多的重复数据?(最终目的是要求去重B库,使AB两库的数据一致!) 求方法、SQL代码,谢谢各位!

首先在B库里查出那些数据是重复的:
select * from tablename b
where b.id in ( select id from tablename group by id having count(id)>1);
然后就是把这些多余数据删除了,这个问题就比较简单了,你自己写吧,可以把上面的查询语句作为子查询放进去。挺简单的,自己动手试试。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-03
use db_A
select distinct * from
(select * from test where exists (select * from db_B.test)) into temp;
delete from test;
select * from temp into test;
drop table temp;

思路应该就是这样,没测试。如果需要j经常进行这样的操作,可以把上面的语句放在一个存储过程过程中,需要的时候可以随时执行了。本回答被提问者和网友采纳
第2个回答  2012-11-02
我有些小小的问题哈,既然你的最终目的是两库同步,那么直接把两库合并UNION ALL不就行了?另外是不是只是B库的数据比A库多(因为id,name,bm重复造成),A库不会比B库多?如果B库的同一个id,name,bm组合有重复记录,而xb,zz内容又不相同,怎么取舍?

忘了最重要的一个问题,是什么数据库?俺只会ORACLE,别的只能讲原理,不会写语句。
第3个回答  2012-11-03
办法有2,
1、跨库查询
2、将一个库中的数据导出,再倒入到另一个库,然后再做查询。
第4个回答  2020-03-18
如果quotationart表没有定义主键,那么你可以利用创建临时表来存储,写法如下:

select
distinct
seq,
art_no,
quotation
into
quotationart_tmp from
quotationart
相似回答