我们的数据库(MySQL)中有一个表格,其中包含以下内容:id,title和discription。
这是一个糊涂网站,我们从其他网站获得的大部分数据具有相同的标题和描述,尽管是独特的ID。我们不希望获取具有相同标题和说明的数据,因为我们已在数据库中拥有相似(相同)的数据。
我们怎样才能轻松删除相同的数据? (但请记住,ids是独一无二的。)
答案 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