MySQL:如何使数据变化多样?

时间:2010-03-04 10:54:49

标签: mysql

我们的数据库(MySQL)中有一个表格,其中包含以下内容:id,title和discription。

这是一个糊涂网站,我们从其他网站获得的大部分数据具有相同的标题和描述,尽管是独特的ID。我们不希望获取具有相同标题和说明的数据,因为我们已在数据库中拥有相似(相同)的数据。

我们怎样才能轻松删除相同的数据? (但请记住,ids是独一无二的。)

3 个答案:

答案 0 :(得分:0)

根据数据库的大小,您可以计算记录之间的Levenshtein距离或使用soundex

答案 1 :(得分:0)

您不先插入它们,稍后再删除它们,在这两列上创建UNIQUE KEY并在插入数据时生成INSERT IGNORE INTO语句。

如果您已有数据并希望将其删除,则可以ALTER IGNORE TABLE ADD UNIQUE INDEX ...

答案 2 :(得分:0)

您的问题是如何从表中删除重复数据。对?

您希望查找与其他行具有相同标题和相同描述的所有行,并且只保留一行并删除其他行。

假设您的表名称为table1,而您的ID列是数字。

DELETE t  
FROM table1 t  
JOIN (  
    SELECT title, description, MIN(ID) AS idNotToDelete  
    FROM table1  
    GROUP BY title, description  
    HAVING COUNT(*) > 1  
) t1  
    ON t.title = t1.title AND t.description = t1.description AND t1.idNotToDelete <> t.id 

上面的查询将查找具有多个匹配项的所有行,并标记每次出现的最小ID。然后它将删除具有相同标题和描述的所有重复行,除了具有最小ID的行。     所以这个

id标题说明
1 myTitle myDescription
2 myTitle myDescription
3 myTitle2 myDescription2
4 myTitle2 myDescription2
5 myTitle myDescription

将成为

id标题说明
1 myTitle myDescription
3 myTitle2 myDescription2