如何使用 PHPMyAdmin 删除 MySQL 中的重复行?
How do I remove duplicate rows in MySQL using PHPMyAdmin?
我有一个名为 'master_database' 的数据库和一个名为 'info'
的 table
在 'info' table 中,我有多个记录,我需要 'email' 字段不包含任何重复项,但目前确实如此。我可以使用什么 SQL 命令 运行 删除这些重复项?
你可以用这个知道重复的行:
SELECT email, COUNT(email) FROM info GROUP BY email HAVING COUNT(email) > 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)
这假设您在 table 中有一个唯一 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)
这些值将被删除。
如果您根本没有唯一字段(即行确实重复,以下方法将起作用):
转到相关 table。
创建 select 查询以仅 select 相关的重复行对。
修改查询以删除但添加限制,例如:
从 [table name]
中删除 [fieldname]
LIKE '[value]' AND [fieldname]
LIKE '[value]' LIMIT 1
在使用查询删除重复对中的一个之前模拟检查效果,或者如果有超过一对重复项则重复使用
或
转到相关 table。
创建 select 查询以仅 select 相关行。
复制查询供以后粘贴。
查询结果底部的导出按钮将只导出查询结果。
向后粘贴查询但对其进行修改以删除这些行。
复制重复行之一的导出插入查询,以在没有重复行的情况下重新插入。
我有一个名为 'master_database' 的数据库和一个名为 'info'
的 table在 'info' table 中,我有多个记录,我需要 'email' 字段不包含任何重复项,但目前确实如此。我可以使用什么 SQL 命令 运行 删除这些重复项?
你可以用这个知道重复的行:
SELECT email, COUNT(email) FROM info GROUP BY email HAVING COUNT(email) > 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)
这假设您在 table 中有一个唯一 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)
这些值将被删除。
如果您根本没有唯一字段(即行确实重复,以下方法将起作用):
转到相关 table。
创建 select 查询以仅 select 相关的重复行对。
修改查询以删除但添加限制,例如:
从 [table name]
中删除 [fieldname]
LIKE '[value]' AND [fieldname]
LIKE '[value]' LIMIT 1
在使用查询删除重复对中的一个之前模拟检查效果,或者如果有超过一对重复项则重复使用
或
转到相关 table。 创建 select 查询以仅 select 相关行。 复制查询供以后粘贴。 查询结果底部的导出按钮将只导出查询结果。 向后粘贴查询但对其进行修改以删除这些行。 复制重复行之一的导出插入查询,以在没有重复行的情况下重新插入。