采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据。完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法。

N.B. 删除数据表的重复数据时,请先备份数据表。

方法一

# 保留主键 ID 较小的那条记录
DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name # 保留主键 ID 较大的那条记录
DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name

方法二

# 保留主键 ID 较大的那条记录
DELETE FROM NAMES
WHERE id NOT IN (SELECT *
FROM (SELECT MIN(n.id)
FROM NAMES n
GROUP BY n.name) x) # 保留主键 ID 较小的那条记录
DELETE FROM NAMES
WHERE id NOT IN (SELECT *
FROM (SELECT MAX(n.id)
FROM NAMES n
GROUP BY n.name) x)

P.S. 当数据表的数据量较多时,建议使用方法二,大大节省时间。

参考链接:

  1. Delete all Duplicate Rows except for One in MySQL? [duplicate]
  2. sql - Remove duplicate rows in MySQL - Stack Overflow

MySQL 数据库删除表中重复数据的更多相关文章

  1. ROWID面试题-删除表中重复数据(重复数据保留一个)

    /* ROWID是行ID,通过它一定可以定位到r任意一行的数据记录 ROWID DNAME DEPTNO LOC ------------------ ------------------------ ...

  2. mysql mariadb 删除表中的数据时数据库变大

    删除表中数据以前 [root@RM uar3]# du -sh * 3.3G apache-tomcat-7.0.54 150M instalRM4UAR 0 mariadb 903M mariadb ...

  3. 查询和删除表中重复数据sql语句

      1.查询表中重复数据.select * from peoplewhere peopleId in (select   peopleId   from   people   group   by   ...

  4. sqlite 删除表中重复数据(亲测可用)

    例子:表名  Paper .通过字段PaperID查找重复数据. 1 --查询某表中重复的数据       select * from Paper group by PaperID having co ...

  5. oracle 查询及删除表中重复数据

    create table test1( id number, name varchar2(20) ); ,'jack'); ,'jack'); ,'peter'); ,'red'); insert i ...

  6. Mysql快速删除表中重复的数据

    表结构 CREATE TABLE T_VENDOR ( ID ) NOT NULL AUTO_INCREMENT COMMENT 'ID', COUNTRY ) DEFAULT NULL COMMEN ...

  7. mysql删除表中重复数据,只保留一个最小的id的记录

    语句: delete from table1 where id not in (select minid from (select min(id) as minid from table1 group ...

  8. mysql 查询及 删除表中重复数据

    CREATE TABLE `test` ( `id` INT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NULL DEFAULT NULL, `a ...

  9. SQL Server中删除表中重复数据

    方法一:利用游标,但要注意主字段或标识列 declare @max integer,@id integer open cur_rows fetch cur_rows into @id,@max beg ...

随机推荐

  1. POJ-2502 Subway( 最短路 )

    题目链接:http://poj.org/problem?id=2502 Description You have just moved from a quiet Waterloo neighbourh ...

  2. HDU dp递推 母牛的故事 *

    母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  3. 【Offer】[26] 【树的子结构】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入两棵二叉树A和B,判断B是不是A的子结构.图中右边的树是左边的子结构  思路分析 先对树A进行遍历,找到与树B的根结点值相同的节点 ...

  4. Python中字典,集合和元组函数总结

    ## 字典的所有方法- 内置方法 - 1 cmp(dict1, dict2) 比较两个字典元素. - 2 len(dict) 计算字典元素个数,即键的总数. - 3 str(dict) 输出字典可打印 ...

  5. eclipse中注释模板使用

    步骤: Window -->Preferences-->Java-->Code Style -->Code Templates-->Comments 1.Files可对整 ...

  6. linux中安装vsftpd出现的问题

    提示:安装vsftpd必须要在root用户下才能安装成功,进入root:su -(中间有空格) 问题: 1.再用命令getsebool -a | grep ftpd命令查看查看状态时出现的问题:SEL ...

  7. 【第二十二篇】从客户端中检测到有潜在危险的 Request.Form 值

    提交数据的时候  用js的方法   escape(富文本框的值)    例:escape(UM.getEditor('Content').getContent()); 取值的时候   unescape ...

  8. kubernetes部署高可用Harbor

    前言 本文Harbor高可用依照Harbor官网部署,主要思路如下,大家可以根据具体情况选择搭建. 部署Postgresql高可用集群.(本文选用Stolon进行管理,请查看文章<kuberne ...

  9. Java抽象类构造方法

    java中抽象类的子类的构造方法会隐含父类的无参构造方法. package com.zempty.abstractclass; public class AbstractDemo01 { public ...

  10. Jmeter安装图文及入门教程

    一.JMeter介绍 JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域.它可以用于测试静态和动态资源,例如 ...