在几个条件下删除所有重复的主题

T10*_*000 4 mysql sql duplicates sql-delete

我正在尝试使sql删除所有重复的标题但是必须删除具有以下条件的重复项:

  • 必须只删除具有相同object_id的重复项
  • 必须只保留最新的记录(最大的topic_id)(topic_id是每个主题AI的唯一ID)

到目前为止我已经完成了(用select测试...)

SELECT topic_id,object_id,title,url,date 
FROM topics GROUP BY title 
HAVING ( COUNT(title) > 1) 
ORDER BY topic_id DESC
Run Code Online (Sandbox Code Playgroud)

但不符合条件.
我正在使用mysql.

Qua*_*noi 5

MySQL,您不能将目标表指定DML给子查询中的操作(除非您将其嵌套多个深度,但在这种情况下,您将无法获得可靠的结果,并且无法使用相关的子查询).

使用JOIN:

DELETE  td
FROM    topics td
JOIN    topics ti
ON      ti.object_id = td.object_id
        AND ti.title = td.title
        AND ti.topic_id > td.topic_id;
Run Code Online (Sandbox Code Playgroud)

topics (object_id, title, topic_id)为此创建索引以快速工作.