MySQL中删除多余的重复记录

检查重复记录

-- 检查重复code1
select count(identity) num, identity from event_log
where code=‘code1‘
group by identity having count(identity) > 1
order by num desc

删除重复记录

DELETE FROM event_log WHERE `code`=‘code1‘ AND identity IN (
    SELECT identity from (
        SELECT identity FROM event_log WHERE code=‘code1‘ GROUP BY identity HAVING count(identity) > 1
    ) a
) AND id NOT IN (
    SELECT keepId FROM (
        SELECT min(id) keepId FROM event_log WHERE code=‘code1‘ GROUP BY identity HAVING count(identity) > 1
    ) b
)

其中 a 和 b 两个中间表的作用是, 避免执行时出现  You can‘t specify target table ‘xxxxx‘ for update in FROM clause 错误

时间: 2024-10-08 21:34:04

MySQL中删除多余的重复记录的相关文章

eclipse中删除多余的工作空间记录

所以对于不再使用的工作空间,每次出现在eclipse的“文件”>>“切换工作空间”里面的时候就觉得特别不爽. 所以认真研究了eclipse目录之后让我找到了,删除不需要工作空间记录的方法. 打开eclipse的根目录 依次进入 configuration >> .settings 用notepad++打开 org.eclipse.ui.ide.prefs 最下面一行 RECENT_WORKSPACES 就是工作空间记录, 找到你需要删除的 包括前面的“\n”一起删除就好.

SqlServer查找表中多余的重复记录

1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from peoplewhere peopleId in (select peo

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

用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT * FROM people WHERE peopleId IN ( SELECT peopleId FROM people GROUP BY peopleId HAVINGcount(peopleId) > 1 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3

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

3.查找表中多余的重复记录(多个字段) select * from vitae awhere (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1) 注意这里 in可以有多个字段

MySQL中删除数据的两种方法

转自:http://blog.csdn.net/apache6/article/details/2778878 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句. DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因此,DELETE语句更灵活. 如果要清空表中的所有记录,可以使用下面的两种方法: DELETE FROM table1 TRUNCATE TABLE table1 其

删除多个重复记录

博客中,Insus.NET有分享过处理重复记录的功能.如<删除重复Row记录数据>https://www.cnblogs.com/insus/p/10890148.html 今天就改编这个,改为动态存储过程.日后可以针对任一张表来进行. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Insus.NET -- Blog: ht

mySQL中删除unique key的语法 (删除某个字段的唯一性)

mySQL中删除unique key的语法 CREATE TABLE `good_booked` (  `auto_id` int(10) NOT NULL auto_increment,  `good_id` int(11) default NULL,  `chemist_id` int(11) default NULL,  PRIMARY KEY  (`auto_id`),  UNIQUE KEY `good_id` (`good_id`,`chemist_id`),  KEY `curre

160802、1.06s删除10w条重复记录只保留一条(mysql)及linux删除乱码文件

上次发表过的一遍删除重复记录的文章,其中最优的方案三删除1w条也花了0.07秒而2w条就已经花掉了4秒.今天进行了进一步优化,测试删除10w条只花了1.06秒.速度提升了很多. 建表语句 CREATE TABLE `test_user` ( `id` INT(10) NOT NULL DEFAULT '0', `namea` VARCHAR(40) NOT NULL, `nameb` VARCHAR(40) NOT NULL, `user_id` VARCHAR(40) NOT NULL, PR

MySql中having字句对组记录进行筛选使用说明

having字句可以让我们筛选成组后的各种数据 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. SQL实例: 一.显示每个地区的总人口数和总面积 SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面