首頁 >後端開發 >php教程 >急用!!如何比较数据库中的两个表中 的内容,删除相同的数据,保留不一样的数据

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

WBOY
WBOY原創
2016-06-23 14:19:381647瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn