MySQL中删除重复数据只保留一条

标签: mysql 数据 select sql
53902人阅读 评论(10) 收藏 举报
分类:

用SQL语句,删除掉重复项只保留一条

在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

SELECT
    *
FROM
    people
WHERE
    peopleId IN (
        SELECT
            peopleId
        FROM
            people
        GROUP BY
            peopleId
        HAVING
            count(peopleId) > 1
    )

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

DELETE
FROM
    people
WHERE
    peopleName IN (
        SELECT
            peopleName
        FROM
            people
        GROUP BY
            peopleName
        HAVING
            count(peopleName) > 1
    )
AND peopleId NOT IN (
    SELECT
        min(peopleId)
    FROM
        people
    GROUP BY
        peopleName
    HAVING
        count(peopleName) > 1
)

3、查找表中多余的重复记录(多个字段)

SELECT
    *
FROM
    vitae a
WHERE
    (a.peopleId, a.seq) IN (
        SELECT
            peopleId,
            seq
        FROM
            vitae
        GROUP BY
            peopleId,
            seq
        HAVING
            count(*) > 1
    )

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

DELETE
FROM
    vitae a
WHERE
    (a.peopleId, a.seq) IN (
        SELECT
            peopleId,
            seq
        FROM
            vitae
        GROUP BY
            peopleId,
            seq
        HAVING
            count(*) > 1
    )
AND rowid NOT IN (
    SELECT
        min(rowid)
    FROM
        vitae
    GROUP BY
        peopleId,
        seq
    HAVING
        count(*) > 1
)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

SELECT
    *
FROM
    vitae a
WHERE
    (a.peopleId, a.seq) IN (
        SELECT
            peopleId,
            seq
        FROM
            vitae
        GROUP BY
            peopleId,
            seq
        HAVING
            count(*) > 1
    )
AND rowid NOT IN (
    SELECT
        min(rowid)
    FROM
        vitae
    GROUP BY
        peopleId,
        seq
    HAVING
        count(*) > 1
)

6.消除一个字段的左边的第一位:

UPDATE tableName
SET [ Title ]= RIGHT ([ Title ],(len([ Title ]) - 1))
WHERE
    Title LIKE '村%'

7.消除一个字段的右边的第一位:

UPDATE tableName
SET [ Title ]= LEFT ([ Title ],(len([ Title ]) - 1))
WHERE
    Title LIKE '%村'

8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录

UPDATE vitae
SET ispass =- 1
WHERE
    peopleId IN (
        SELECT
            peopleId
        FROM
            vitae
        GROUP BY
            peopleId

技术交流学习或者有任何问题欢迎加群:154514123

这里写图片描述

查看评论

SQL删除重复数据只保留一条

SQL删除重复数据只保留一条
  • anya
  • anya
  • 2011-05-09 18:39:00
  • 366242

mysql删除重复数据只保留id最大一条记录

mysql删除重复数据只保留id最大一条记录
  • u013350170
  • u013350170
  • 2017-04-20 10:17:16
  • 4623

mysql去除重复数据,只保留一条。

之前写过的爬虫里面,因为种种原因出现了一些重复的数据需要删除掉。然后发现mysql并没有直接的去重功能,要自己写。 查过许多博客之后发现可以这么写。 删除ppeople 重复的数据,然后重复数据中...
  • meishenghang1148
  • meishenghang1148
  • 2017-12-07 14:48:15
  • 605

mysql中删除两条重复的数据,只保留一条

鉴于2条完全一样的数据,无法区别,只好让他们不一样,于是插入 alter table table_name add column id int(11) PRIMARY KEY AUTO_IN...
  • zhang168
  • zhang168
  • 2014-06-11 17:01:37
  • 4064

解决mysql数据重复问题-只保留一条数据

1.sql语句,原理使用临时表法,效率比较低 delete FROM `source` WHERE is_deleted=0 AND (group_id,group_ind...
  • lv836735240
  • lv836735240
  • 2016-10-28 10:23:27
  • 1698

关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句理解

正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 。如下: 表字段和数据:  SQL语句:  DELETE ...
  • dsiori
  • dsiori
  • 2016-10-13 14:30:42
  • 2973

MySQL中删除表中重复数据,只保留一条

以为通过命令直接删除就可以了,总是报错: delete from test where name in(select name from test as t having coun...
  • mayaofr
  • mayaofr
  • 2016-07-12 17:15:02
  • 252

MySQL删除没有主键的表中的重复记录,只保留一条记录

如果在设计表时没有指定主键, 导入数据时可能出现重复导入, 导致一个表中出现多条完全相同的多条记录。 以下是解决这个问题的思路: 使用distinct语句筛选出不重复的记录存入临时表tmp; c...
  • qq_20477309
  • qq_20477309
  • 2017-10-12 16:02:02
  • 460

【mysql】删除重复数据只保留一条

在SWQA平台中,BUG数据写入数据库的逻辑是每天进行读写一次,若该天是第二次进行写入该天的数据,则应将该天的数据首先删除后再进行写入,但是出现了一个问题,数据未删除时已写入数据,这个时候需要将重复的...
  • lluozh2015
  • lluozh2015
  • 2017-07-17 16:58:07
  • 379

mysql删除重复数据只保留一条

简述最近在做一个项目,涉及到需要同步远端数据库的数据到本地,由于误操作导致数据库里面的数据出现重复(冗余) ps: 由于数据量比较大,最后发现冗余了几万条记录 so 手动删除,呵呵 // 下面将以简单...
  • sshfl_csdn
  • sshfl_csdn
  • 2015-09-15 22:40:33
  • 457
    编程技术学习交流群 :154514123
    微信
    个人资料
    持之以恒
    等级:
    访问量: 65万+
    积分: 8706
    排名: 2807
    最新评论