首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从id重复的表中删除重复记录

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

Stack Overflow用户
提问于 2017-12-09 14:31:12
回答 1查看 41关注 0票数 0

我有个小问题,我的桌子“家具”里记录的ID是一样的。我带你去看看。

标题

id : public_name

1:“桌子”

1:“桌子”

1:“桌子”

2:“comp”

2:“comp”

3:“地毯”

3:“地毯”

3:“地毯”

3:“地毯”

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

代码语言:javascript
复制
<?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。

有什么简单的查询或脚本可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-09 14:33:15

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

代码语言:javascript
复制
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;

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

代码语言:javascript
复制
create unique index unq_furniture_id on furniture(id);

你可能也想在名字上写上:

代码语言:javascript
复制
create unique index unq_furniture_public_name on furniture(public_name);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47729614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档