我有一点问题,我的餐桌&家具'包含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留下一条记录。
有没有简单的查询或脚本来解决这个问题?
答案 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);