我有一个数据库表中包含的字段:搜索包含重复字段的行并删除它们的Mysql查询?
username, description, password.
有时候,成员从一另一份说明,为了节省时间
所以我有这样的:
约翰 - 约翰的描述 - 约翰的密码
Michael - John的描述 - 迈克尔的密码
是否有mysql查询搜索重复的字段条目并删除它们? 如何在我们访问时删除整行数据?
我有一个数据库表中包含的字段:搜索包含重复字段的行并删除它们的Mysql查询?
username, description, password.
有时候,成员从一另一份说明,为了节省时间
所以我有这样的:
约翰 - 约翰的描述 - 约翰的密码
Michael - John的描述 - 迈克尔的密码
是否有mysql查询搜索重复的字段条目并删除它们? 如何在我们访问时删除整行数据?
创建一个新表,移动非重复条目,删除旧表并重新命名一个新表。
例子:
CREATE TABLE `new_table` as
SELECT * FROM `old_table` WHERE 1 GROUP BY [columns to remove duplicates by];
DROP TABLE `old_table`;
RENAME TABLE `new_table` TO `old_table`;
然而,这是很好的只是定期使用,并且它不检查是否有任何重复。它只是将独特的条目分组并将它们移动到另一个表格。当你想过滤你的条目时它很有用。
另一种方法是检查这样的:
SELECT `name` FROM `table` WHERE `description` LIKE '%descriptiontexthere%'
然后,如果一些结果发现,这是一个重复的。
但是,有一个很大的缺点:用户只能更改一个字母,查询将失败。
但是,通过将描述拆分为数组可以避免(不完全)该缺点。例如,每隔100个字符分割一次,然后像上面的例子那样检查,但是有多个条件(例如description LIKE 'first100chars' OR description LIKE 'second100chars'
)。
第三种方法是将描述拆分为单词数组,然后选择具有太多相同单词的行。与X相同的单词行可能是一个可能的重复。您可以根据输入描述的长度设置阈值。
你永远无法确定它是否重复,除非它是完全相同的条目。
Ty非常适合回答,现在正在测试查询。 – webmasters 2012-07-25 00:00:58
您不应将密码存储在数据库中。 – 2012-07-24 23:11:17
完全重复行或只是任何重复的字段? – Ryan 2012-07-24 23:11:39
如果说明有意相同,该怎么办? – zerkms 2012-07-24 23:11:42