欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

急用!!如何比较数据库中的两个表中 的内容,删除相同的数据,保留不一样的数据

程序员文章站 2022-06-01 18:28:04
...
PHP 急求!!!

请问,如何比较两个表中的数据,一条条查。如果数据相同,查一条删一条;如果数据不同,分别保留。

最后将两个表中保留的不一样的数据 输出来并共同导入到另外一个专门盛放错误的表中。

回复讨论(解决方案)

亲们,最好来段代码看看

数据是否相同? 是根据某个字段来判断,还是数据表中每个字段都要比较
可以查询出来这两个表中的所有数据,循环比较

恩恩,两个表中的列都是一样的,但是怎样写呢,多列比较,然后比较之后,相同的删掉,不一样的保留在各自的表中,请问,有没有详细的代码供参考

呵呵,最简单的做法就是查询一个表所有数据循环跟另一个表的比较

还有一个就是直接联表查询,
比如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