如何在MySQL UPDATE语句中模拟OFFSET?

T. *_*nes 5 mysql offset

我有一个MySQL数据库表,其中包含文章ID(主键)和文章标题.我想从表中删除重复的标题,但保留第一次出现的标题.我最初只是对所有重复的标题进行查询:

SELECT
    title,
    count( id ) AS count
FROM articles
GROUP BY title
HAVING count > 1
Run Code Online (Sandbox Code Playgroud)

然后我使用foreach循环和此命令将所有重复的标题替换为空白:

UPDATE articles
SET title = ''
WHERE title = '$duplicate_title'
Run Code Online (Sandbox Code Playgroud)

我想更新articles表并替换除第一个条目之外的所有重复标题,基于文章ID ASC使用类似的东西.问题是OFFSET似乎不能在UPDATE中工作.有没有办法在单个查询中执行此操作?

UPDATE articles
SET title = ''
WHERE title = '$duplicate_title'
ORDER BY id ASC
OFFSET 1
Run Code Online (Sandbox Code Playgroud)

Phi*_*hil 1

UPDATE articles a
INNER JOIN articles b
    ON a.title = b.title AND a.ID > b.ID
SET title = '';
Run Code Online (Sandbox Code Playgroud)

这基本上说的是

更新所有存在具有相同标题和较低 ID 的匹配文章的文章