Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除MYSQL中非常非常相似的行_Mysql_Sql - Fatal编程技术网

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

删除MYSQL中非常非常相似的行,mysql,sql,Mysql,Sql,在PHPMYAdmin中,我正在运行一个网络爬虫。网络爬虫偶尔会拾取相同的URL。在网络爬虫中,它为数千个链接建立了索引,我不想要重复的链接。有没有办法删除SQL中类似的行(唯一的区别是id字段)如果您的表名为the_table,其字段是id(唯一字段)和url,那么您可以写: DELETE FROM the_table WHERE id NOT IN ( SELECT * FROM ( SELECT MIN(id)

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

如果您的表名为
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
子句)

您可以
删除所有url,但id最大的url除外(最近的):

执行此操作后,最好在url字段上设置唯一约束:

ALTER TABLE tbl ADD UNIQUE idx_unique_url (url); 

id
字段是一个自动递增的INT字段吗?是的,它是一个自动递增的字段仅供参考,在删除操作中不能在子查询中引用同一个表。它将抛出以下错误:
#1093-您不能在FROM子句中指定更新的目标表“the#u table”
@ZaneBien:哦,我忘了这一点。该死的MySQL。现已修复,谢谢。:-)不按我的要求做,我要求删除不属于id的重复数据tag@user1582899:你能详细说明一下它的作用和你想要的区别吗?
ALTER TABLE tbl ADD UNIQUE idx_unique_url (url);