在PHPMYAdmin中,我正在运行一个网络爬虫。网络爬虫偶尔会拾取相同的urls。在网络爬虫中,它已经索引了数千个链接,我不想要重复的链接。有没有办法在SQL中删除相似的行(唯一的区别是id字段)
发布于 2012-08-17 02:38:09
您可以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-17 02:35:28
如果您的表名为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之外所有字段都相同的行,那么只需将这些字段与url一起添加到GROUP BY子句中即可。)
https://stackoverflow.com/questions/11993171
复制相似问题