在 PHPMYAdmin 中,我正在运行一个网络爬虫。网络爬虫偶尔会获取相同的网址。在网络爬虫中,它已经索引了数千个链接,我不想要重复的链接。有没有办法删除 SQL 中的相似行(唯一的区别是 id 字段)
问问题
61 次
2 回答
1
DELETE
除了具有最大 id 的 URL(最新)之外,您可以使用所有 URL:
DELETE a
FROM tbl a
LEFT JOIN (
SELECT MAX(id) AS id
FROM tbl
GROUP BY url
) b ON a.id = b.id
WHERE b.id IS NULL
完成此操作后,最好在 url 字段上设置唯一约束:
ALTER TABLE tbl ADD UNIQUE idx_unique_url (url);
于 2012-08-16T18:38:09.190 回答
0
如果你的表被命名the_table
并且它的字段是id
(一个唯一的字段)和url
,那么你可以写:
DELETE
FROM the_table
WHERE id NOT IN
( SELECT *
FROM ( SELECT MIN(id)
FROM the_table
GROUP BY url
) t
)
;
(如果您还有其他字段,并且只想删除除 之外的所有字段都相同的行id
,那么只需将这些字段与GROUP BY
一起添加到子句中url
。)
于 2012-08-16T18:35:28.223 回答