在PHPMYAdmin中,我正在运行网络爬虫。网络爬虫偶尔会拿起相同的网址。在网络爬虫中,它已经索引了数千个链接,我不想要重复的链接。有没有办法删除SQL中的类似行(唯一的区别是id字段)
答案 0 :(得分:1)
您可以DELETE
除最大ID(最近)之外的所有网址:
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);
答案 1 :(得分: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
)
;
(如果您还有其他字段,并且只想删除除<{1}}之外所有字段相同的行,则只需将这些字段添加到id
子句中以及GROUP BY
。)