关闭

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

标签: mysql数据selectsql
46866人阅读 评论(6) 收藏 举报
分类:

用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

这里写图片描述

3
6
查看评论

MySQL之——查询重复记录、删除重复记录方法大全

查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC 一、查找重复记录 1、查找全部重复记录 Select...
  • l1028386804
  • l1028386804
  • 2016-06-22 13:30
  • 28901

MySql数据库去除重复的数据

今天群内有群友提出了一个问题,就是MySql中删除
  • jeepxiaozi
  • jeepxiaozi
  • 2014-10-12 19:09
  • 19510

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

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

MySQL查询重复字段,及删除重复记录的方法

MySQL查询重复字段,及删除重复记录的方法(转) Submitted by wiley on Thu, 09/03/2009 - 09:36 [教学] MySQL查询重复字段,及删除重复记录的方法 MySQL, 数据库, 数据库, 字段, 服务器 数据库中有个大...
  • Donthan
  • Donthan
  • 2013-04-11 02:19
  • 30510

MySQL删除单列重复或多列同时重复值并保留一条

mysql删除重复字段并保留一条
  • carry9148
  • carry9148
  • 2016-08-19 17:15
  • 1540

MySQL删除重复数据 并保留ID最大值

DELETE a FROM user1 a JOIN ( SELECT user_name, count(*), MAX(id) AS id FROM user1 GROUP BY use...
  • qq_25067905
  • qq_25067905
  • 2017-02-10 14:55
  • 1023

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

用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT * FROM people WHERE peopleId IN ...
  • linjpg
  • linjpg
  • 2017-04-06 15:48
  • 793

Mysql删除id相同的重复数据

一问题:数据库中有多条id重复的数据,需要删除这些数据完全一样的数据 在网络上看到多种删除方式,但是运行报错,所以写了这篇文章,给自己以及其他需要解决此问题的人 二解决 首先查看一下表中是否有重复数据 SELECT id,COUNT(*) FROM ...
  • Alice_qixin
  • Alice_qixin
  • 2017-06-13 11:19
  • 828

mysql 删除重复数据

如题:mysql 数据库删除重复数据 因为是mysql 所以其他数据哭的命令在mysql 中是不能使用的。不要想当然的使用sql 脚本。
  • u011845742
  • u011845742
  • 2015-04-30 20:05
  • 477

MySQL去除查询结果重复值

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用d...
  • Missyouzhang
  • Missyouzhang
  • 2010-08-09 11:47
  • 128394
    Java技术交流群:6128790
    微信
    编程技术学习交流群 :154514123
    微信
    个人资料
    • 访问:616352次
    • 积分:8484
    • 等级:
    • 排名:第2787名
    • 原创:311篇
    • 转载:34篇
    • 译文:2篇
    • 评论:113条
    最新评论