首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MYSQL中删除非常非常相似的行

在MYSQL中删除非常非常相似的行
EN

Stack Overflow用户
提问于 2012-08-17 02:22:29
回答 2查看 56关注 0票数 0

在PHPMYAdmin中,我正在运行一个网络爬虫。网络爬虫偶尔会拾取相同的urls。在网络爬虫中,它已经索引了数千个链接,我不想要重复的链接。有没有办法在SQL中删除相似的行(唯一的区别是id字段)

EN

回答 2

Stack Overflow用户

发布于 2012-08-17 02:38:09

您可以DELETE除id最大(最近的)的URL之外的所有URL:

代码语言:javascript
复制
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字段上设置唯一约束可能是个好主意:

代码语言:javascript
复制
ALTER TABLE tbl ADD UNIQUE idx_unique_url (url); 
票数 1
EN

Stack Overflow用户

发布于 2012-08-17 02:35:28

如果您的表名为the_table,并且其字段为id (唯一字段)和url,则可以这样写:

代码语言:javascript
复制
DELETE
  FROM the_table
 WHERE id NOT IN
        ( SELECT *
            FROM ( SELECT MIN(id)
                     FROM the_table
                    GROUP BY url
                 ) t
        )
;

(如果您还有其他字段,并且只想删除除id之外所有字段都相同的行,那么只需将这些字段与url一起添加到GROUP BY子句中即可。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11993171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档