我有一个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)
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 的匹配文章的文章
| 归档时间: |
|
| 查看次数: |
2503 次 |
| 最近记录: |