Mysql sql搜索重复项并验证2个表(相同结构)中的其余数据
我刚刚向一个数据库添加了一些数据,8个人同时编写了这个数据库 这给我留下了8张结构相同的表格:Mysql sql搜索重复项并验证2个表(相同结构)中的其余数据,mysql,search,duplicates,Mysql,Search,Duplicates,我刚刚向一个数据库添加了一些数据,8个人同时编写了这个数据库 这给我留下了8张结构相同的表格: id; mobile-phone; address; register-number; bla bla bla 我想搜索这8个人的副本,我想最好搜索手机 对于每一个重复的手机,如果能验证行的其余部分是否完全重复,那就太好了。如果我发现相同的地址,我希望该字段在8个表中除一个以外的所有表中归零。如果一行中的所有字段均为零,则可以将其删除 我以前用过这个搜索,但它不是很好: SELECT * FROM
id; mobile-phone; address; register-number; bla bla bla
我想搜索这8个人的副本,我想最好搜索手机
对于每一个重复的手机
,如果能验证行的其余部分是否完全重复,那就太好了。如果我发现相同的地址
,我希望该字段在8个表中除一个以外的所有表中归零。如果一行中的所有字段均为零,则可以将其删除
我以前用过这个搜索,但它不是很好:
SELECT * FROM
(
SELECT `mobile-phone`
FROM `t1`
UNION ALL
SELECT `mobile-phone`
FROM `t2`
) `tx`
GROUP BY `mobile-phone`
HAVING COUNT(*)>1
所以这是一个梦想成真,但任何接近这一点的东西都会帮助我。
谢谢
编辑1
我有一个想法,但我不确定什么不起作用:
UPDATE `t2` set `address`=0 WHERE `t1`.`address`=`t2`.`address` AND `t1`.`mobile-phone`=`t2`.`mobile-phone`
我在where子句中得到了#1054-未知列't1.address'
编辑2
找到一些东西并尝试适应:
declare x INTEGER;
SET x = 1;
WHILE x <= 200 DO
UPDATE `t2` set `address`=0 WHERE `address`=
(select `address` from `t1` where mobile-phone`=
(select `mobile-phone` from `t2` where `id`=x))
SET x = x + 1;
END WHILE;
声明x整数;
设置x=1;
而x