急用!!如何比较数据库中的两个表中 的内容,删除相同的数据,保留不一样的数据
请问,如何比较两个表中的数据,一条条查。如果数据相同,查一条删一条;如果数据不同,分别保留。
最后将两个表中保留的不一样的数据 输出来并共同导入到另外一个专门盛放错误的表中。
回复讨论(解决方案)
亲们,最好来段代码看看
数据是否相同? 是根据某个字段来判断,还是数据表中每个字段都要比较
可以查询出来这两个表中的所有数据,循环比较
恩恩,两个表中的列都是一样的,但是怎样写呢,多列比较,然后比较之后,相同的删掉,不一样的保留在各自的表中,请问,有没有详细的代码供参考
呵呵,最简单的做法就是查询一个表所有数据循环跟另一个表的比较
还有一个就是直接联表查询,
比如select a,id,b.id from a,b where a.filed1=b.filed1 and a.filed2=b.filed2 and a.filed3=b.filed3
这样查询然后删除了
但是要求执行效率高呢,这样貌似速度有点慢
1、取得 表A 的记录数备用 select count(*) as cnt from A
2、提取出与表A不同的表B的记录 select * from A union select * from B limit cnt
3、取得 表B 的记录数备用 select count(*) as cnt from B
4、提取出与表B不同的表A的记录 select * from B union select * from A limit cnt
后面怎么做?你自己决定
可以考虑用存储过程
不要那么麻烦了,把表发出来,
create table ..
insert into ..
然后把你想要的结果做一份范本出来
现在关键是如何删除两张表中一样的数据,保留不同的数据?
亲们,给建议,最好有代码,谢谢
你应该给出测试数据
例如:
两张表是相同的,现在把相同的数据删掉,保留不同的数据
select a,id,b.id from a,b where a.filed1=b.filed1 and a.filed2=b.filed2 and a.filed3=b.filed3
然后再删除吧
亲们,谢谢大家支持,在大家的帮助下已解决
delete a,b FROM a LEFT JOIN b ON a.c_num=b.c_num and a.c_jifen=b.c_jifen where a.c_num=b
.c_num
上一篇: 数据库SQL之表关系&连接查询
下一篇: oracle 数据完整性