Mar*_*sky 3 mysql duplicates sql-delete
如何删除重复的MySQL记录(但只保留一条)
大家好,我有一个问题,我有几条具有相同ID的记录,我想消除重复的记录,但只留下一条。对 mysql 语句有什么想法吗?
我有这个语句来查看记录和重复项的数量,但当我使用删除时它对我不起作用:
SELECT
email,
COUNT(email)
FROM
contacts
GROUP BY email
HAVING COUNT(email) > 1;
Run Code Online (Sandbox Code Playgroud)
我使用这个语句,但它只删除一个重复记录:
DELETE FROM wp_options WHERE option_id=5 limit 1;
Run Code Online (Sandbox Code Playgroud)
有什么办法可以大规模做吗?
更新:我正在使用此语句,但它消除了所有重复记录而不留下任何记录:
DELETE FROM xhi_options
WHERE option_id IN (SELECT option_id
FROM (SELECT option_id
FROM xhi_options
GROUP BY option_id
HAVING COUNT(option_id) > 1) AS T)
Run Code Online (Sandbox Code Playgroud)
您可以使用它来保留具有最低 id 值的行
DELETE e1 FROM contacts e1, contacts e2 WHERE e1.id > e2.id AND e1.email = e2.email;
Run Code Online (Sandbox Code Playgroud)
这是一个示例链接链接 1
或者你可以更改>为<保留最高的id
DELETE e1 FROM contacts e1, contacts e2 WHERE e1.id < e2.id AND e1.email = e2.email;
Run Code Online (Sandbox Code Playgroud)
这是一个示例链接链接 2