精华内容
下载资源
问答
  • 1、查找重复数据:SELECT*FROM`table_a`asaWHERENOTEXISTS(SELECT*FROMtable_basbWHEREb.a_id=a.id))ascGROUPBYc.titleHAVINGcount(1)>...2、查找重复数据中需要保留的数据:SELECTMIN(c.id)asidFROM(SELECT*...

    1、查找重复数据:SELECT * FROM `table_a` as a

    WHERE NOT EXISTS (SELECT * FROM table_b as b WHERE b.a_id=a.id)) as c

    GROUP BY c.title HAVING count(1) > 1;

    2、查找重复数据中需要保留的数据:SELECT MIN(c.id) as id FROM

    (SELECT * FROM `table_a` as a WHERE NOT EXISTS (SELECT * FROM table_b as b WHERE b.a_id=a.id)) as c

    GROUP BY c.title HAVING count(1) > 1;

    3、删除重复数据保留一条数据:DELETE FROM table_a WHERE title in (

    SELECT title FROM (SELECT * FROM `table_a` as a WHERE NOT EXISTS (SELECT * FROM table_b as b WHERE b.a_id=a.id)) as c

    GROUP BY c.title HAVING count(1) > 1

    ) AND id NOT in (

    SELECT MIN(c.id) as id FROM (SELECT * FROM `table_a` as a WHERE NOT EXISTS (SELECT * FROM table_b as b WHERE b.a_id=a.id)) as c

    GROUP BY c.title HAVING count(1) > 1);

    解决mysql中重复数据又想保留一条数据的思路。

    展开全文
  • SELECT * FROM (SELECT addTime FROM motorcade.car_msg_info GROUP BY addTime HAVING COUNT(addTime) > 1) AS b) AND ID NOT IN ...MIN(ID)表示保留ID最小的一条 换成MAX可以保留最新的一条 addTime代表重复数据

    SELECT * FROM

    (SELECT addTime FROM motorcade.car_msg_info GROUP BY addTime HAVING COUNT(addTime) > 1)

    AS b)

    AND ID NOT IN (SELECT * FROM

    (SELECT MIN(ID) FROM motorcade.car_msg_info GROUP BY addTime HAVING COUNT(addTime) > 1)

    AS c)

    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)

    MIN(ID)表示保留ID最小的一条 换成MAX可以保留最新的一条

    addTime代表重复数据

    展开全文
  • 伙伴们经常线上会有一些脏数据我们要进行去重处理,例如我们有一张user表里面有三条数据,现需求按照age进行删除重复数据,每个年龄只能保留一条并且是最新的一条 1.我们先来验证一下重复数据 -- 验证sql ...

    伙伴们经常线上会有一些脏数据我们要进行去重处理,例如我们有一张user表里面有三条数据,现需求按照age进行删除重复数据,每个年龄只能保留一条并且是最新的一条

    1.我们先来验证一下重复数据

    -- 验证sql
    SELECT age,COUNT(*) FROM user GROUP BY age;
    

    18岁有两条,19岁有一条,我们只要删除18岁中id最小的那一条记录即可

    2.去重处理

    DELETE FROM USER WHERE
        age IN (
            SELECT t1.age FROM (
                SELECT age FROM USER
                GROUP BY age
                HAVING COUNT(age) > 1  )t1 
        )
        AND id NOT IN (
            SELECT t.id FROM(
                SELECT MAX(id) `id`
                FROM USER
                GROUP BY age
                HAVING COUNT(age) > 1)t
        )
    ;

    分析一下这段sql:where有两段条件:第一个是拿出哪些年龄要进行删除的age集合,第二段是不能包含这些重复记录中id最大的那一条数据;两个条件组合到一块就可以删除重复数据并且保留最新数据。

    展开全文
  • 用SQL语句,删除重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT*FROMpeopleWHEREpeopleId IN ...

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

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

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    SELECT

    *

    FROM

    people

    WHERE

    peopleId IN (

    SELECT

    peopleId

    FROM

    people

    GROUP BY

    peopleId

    HAVING

    count(peopleId) > 1

    )

    48304ba5e6f9fe08f3fa1abda7d326ab.png

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

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    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

    )

    48304ba5e6f9fe08f3fa1abda7d326ab.png

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

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    SELECT

    *

    FROM

    vitae a

    WHERE

    (a.peopleId, a.seq) IN (

    SELECT

    peopleId,

    seq

    FROM

    vitae

    GROUP BY

    peopleId,

    seq

    HAVING

    count(*) > 1

    )

    48304ba5e6f9fe08f3fa1abda7d326ab.png

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

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    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

    )

    48304ba5e6f9fe08f3fa1abda7d326ab.png

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

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    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

    )

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    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最小的记录

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    UPDATE vitae

    SET ispass =- 1

    WHERE

    peopleId IN (

    SELECT

    peopleId

    FROM

    vitae

    GROUP BY

    peopleId

    展开全文
  • mysql表中,某一字段的值有很多重复数据,需要将这些重复的数据记录删除,只保留其中的一条数据即可,如何使用SQL语句来实现呢,本文章向大家介绍mysql如何查找删除重复数据,需要的朋友可以参考一下。 有这样一张...
  • 现在有张加班表,一个人同一天只允许申请一次加班,就是加班日期和userid相同的数据应该只有一条,但是现在由于之前没有做限制,导致很多数据重复 怎么通过sql删掉重复数据 思路:先查询重复数据的最大id(唯一一条),...
  • 有这样一张表,表数据及结果如下:school_idschool_nametotal_studenttest_takers1239Abraham Lincoln High School55501240Abraham Lincoln High School70351241Acalanes High School120891242Academy Of The ...
  • id, community_code HAVING COUNT(*) = 1) nd ) 中间的临时表不能省,mysql会报错:You can't specify target table 'pay_vip_point' for update in FROM clause 下面是错误示例: DELETE FROM pay_vip_point WHERE ...
  • mysql 删除重复数据保留一条数据,没有主键(即没有rowid)现有表信息数据通过分组查询出重复数据为通过limit数据删除重复数据保留一条 现有表信息数据 通过分组查询出重复数据为 select id, COUNT(id) as ...
  • 创建表 CREATE TABLE `user` ( `name` varchar(10) DEFAULT NULL, `age` int(3) DEFAULT NULL, ...删除重复数据 DELETE FROM `user` WHERE (`name`, `age`, `sex`) IN ( SELECT a.`name`, a.`age`,
  • 无自增主键,去除重复保留一条,步骤: 1、导出a表结构,命名为b表 b表结构为: name mobile 2、查询a表去重复语句,再插入b表 insert into b (select distinct * from a); 执行语句,b表内容为: name ...
  • MySQL删除重复数据行,只保留一条 ? ? delimiter $$CREATE TABLE `devices_all` ( `device_all_id` int(11) NOT NULL AUTO_INCREMENT, `device_id` varchar(512) DEFAULT NULL, `device_token` varchar(512) DEFAULT...
  • 删除表中重复记录,只保留一条:delete from 表名 where 字段ID in (select * from (select max(字段ID) from 表名 group by 重复的字段 having count(重复的字段) > 1) as b);实例: 2.当想要为某一个表建立一个...
  • 问题描述:有一张表因为没有加重复判断,导致会有些重复数据存在,现在需要根据重复规则去掉重复的记录,只保留一条。解决方案:1、两表自关联后按照主键删除,类似于Oracle的rowid--删除主表col是本表的主键...
  • 由于重复向同一张表导入同一批数据,导致前台展示的数据重复,唯一方便快捷的方法莫过于利用delete操作删除重复数据(已经封板发布),只保留其中一条数据。但真的是书到用时方恨少,技术也如此。当时只好在网上搜索...
  • 开发背景:最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性。...
  • 有这样一张表,表数据及结果如下:可以看出,school_name的字段值有重复数据(Abraham Lincoln High School 和Agoura...//删除重复记录,保存Id最小的一条delete FROM `test` WHERE `school_name`in(SELECT `school_na...
  • 这两天做了个调用第三方接口的小程序,因为是实时更新数据,所以请求接口的频率就很高,这样有时会出现往数据库插入重复数据,对数据库造成压力也不方便管理,因为要通过原生sql语句,解决数据库的去重问题....
  • 表结构如下:mysql> desc test1;+--------------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------+-------...
  • MySQL 查询重复数据保留最新一条

    多人点赞 2021-10-28 15:56:55
    准备工作 创建测试表 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(16) NOT NULL, `name` varchar(32) NOT...插入数据 INSERT INTO user (code,name) VALUES('A','张三
  • 开发背景:最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性。...
  • 测试1,删除重复数据保留一条,有效。但只适合有两条重复的数据,因为group时只能查到一个ID,所以每次只能删除一条。DELETE FROM table_a WHERE record_id IN (SELECT a.id FROM (SELECT id FROM table_a GROUP ...
  • 最近有一个需求是要我在用户所有发过的短视频中找到每一个用户最新发送的一条短视频网上找了一下感觉挺好用的所以就记录下来SELECT a.createTime,a.userId FROM short_video_entity aLEFT JOIN short_video_entity b...
  • MySQL删除重复数据保留最新的一条,网上有些博客写的有问题,因为他们只考虑到或者说他们的重复数据最多只有两条,当重复数据大于2时,就会出现问题。 案例描述: 按天删除表中重复数据保留最新的一条(这里...
  • 在几千记录里,存在着些相同的记录,如何能用SQL语句,删除重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT*FROMpeopleWHEREpeopleIdIN...1)2、删除表中多余的重复记录,重复记录...
  • 问题描述 前两天小灰清理一张表的赃数据,需要删除重复数据,仅保留一条。于是,小灰写了一条删除重复数据的sql语句,但是执行之后,发现仍然有重复数据。经排查是重复数据中有null值引起的。
  • 数据如下 想去重name值并且保留ID最大的记录 //查询 查看是否是需要删除的记录 SELECT * FROM test where id not in ( SELECT id from (SELECT MAX(id) id FROM test GROUP BY name) a ); //删除对应的记录 DELETE...
  • 目的: 一张表,表名credit_user相同的user_code有多条重复数据,现在只保留一条数据一:首先是这么想的DELETEFROMcredit_userWHEREuser_code IN (SELECTuser_codeFROMcredit_userGROUP BYuser_codeHAVINGcount(user...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,405
精华内容 35,362
关键字:

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

mysql 订阅