我有一个名为'master_database'的数据库和一个名为'info'的表
在'info'表中我有多条记录,我需要'email'字段不包含任何重复项,但目前它有。我可以运行什么SQL命令来删除这些重复项?
答案 0 :(得分:1)
您可以通过以下方式了解重复的行:
SELECT email, COUNT(email) FROM info GROUP BY email HAVING COUNT(email) > 1
答案 1 :(得分:-1)
DELETE FROM master_database.info WHERE info.ID NOT IN (SELECT MAX(info.ID) FROM master_database.info GROUP BY info.email HAVING COUNT(info.email) > 1)
这假设你在表中有一个唯一的ID,其中记录的数字越大,如果你有一个last_edited时间戳,那么使用它的MAX可能会更好。
请先测试一下!运行以下命令进行测试:
SELECT * FROM master_database.info WHERE info.ID NOT IN (SELECT MAX(info.ID) FROM master_database.info GROUP BY info.email HAVING COUNT(info.email) > 1)
这些值将被删除。
答案 2 :(得分:-1)
如果您根本没有唯一字段(即行确实是重复的,则以下方法将起作用):
转到相关表格。
创建选择查询以仅选择相关的重复行对。
修改查询以删除但添加限制,例如:
DELETE FROM [table name]
WHERE [fieldname]
LIKE '[value]' AND [fieldname]
LIKE '[value]' LIMIT 1
在使用查询删除重复对中的一个之前模拟检查效果,如果重复使用超过一对,则重复使用
或
转到相关表格。 创建选择查询以仅选择相关行。 复制查询以供以后粘贴。 查询结果底部的导出按钮将仅导出查询结果。 将查询粘贴回但修改它以删除这些行。 复制重复行之一的导出插入查询以重新插入而不重复。