从id为重复的表中删除重复记录

时间:2017-12-09 14:31:12

标签: php mysql sql

我有一点问题,我的餐桌&家具'包含ID相同的记录。我会告诉你。

标题

id:public_name
1:' desk'
1:' desk'
1:' desk'
2:' comp'
2:' comp'
3:' rug'
3:' rug'
3:' rug'
3:' rug'

我不知道它是怎么发生的,但是id 2的记录已被复制,其中一些甚至被翻了三倍。 我已经尝试过这个脚本来解决它。

<?php

$con = mysql_connect("localhost","root","pass");
Mysql_Select_db("db", $con);


for($i = 0; $i < 52752; $i++) {
$find = mysql_query("SELECT * FROM furniture WHERE id = '".$i."'");
$count = mysql_num_rows($find);

mysql_query("DELETE FROM furniture WHERE id = '$i' LIMIT ($i - $count)");
echo "'.$i.' fixed";
}

但是它不起作用,它会删除所有ID,我希望它为每个ID留下一条记录。

有没有简单的查询或脚本来解决这个问题?

1 个答案:

答案 0 :(得分:3)

MySQL中最简单的方法是清空并重新填充表格:

create table temp_furniture as
    select distinct id, public_name
    from furniture;

truncate table temp_furniture;

insert into temp_furniture(id, public_name)
    select id, public_name
    from temp_furniture;

然后,为了防止将来发生这种情况,请添加唯一索引/约束:

create unique index unq_furniture_id on furniture(id);

你可能也想要这个名字:

create unique index unq_furniture_public_name on furniture(public_name);