;CREATE TABLE TabTest
(
`id` INT(11) NOT NULL AUTO_INCREMENT
,`factorA` VARCHAR(255) NOT NULL DEFAULT ' '
,`factorB` VARCHAR(255) NOT NULL DEFAULT ' '
,`factorC` DECIMAL(10,2) NOT NULL DEFAULT 0
,`remark` VARCHAR(255) NOT NULL DEFAULT ' '
, PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT=''; INSERT INTO TabTest(factorA, factorB, factorC, remark)
SELECT 'A1', 'B1', 0.5, '1..'
UNION ALL SELECT 'A1', 'B1', 0.5, '2..'
UNION ALL SELECT 'A2', 'B2', 0.5, '3..'
UNION ALL SELECT 'A2', 'B2', 1.5, '4..'
UNION ALL SELECT 'A2', 'B2', 0.5, '5..' ;SELECT * FROM TabTest;

-- 方案一
;DELETE FROM TabTest WHERE id NOT IN ( SELECT * FROM ( SELECT id FROM TabTest GROUP BY factorA, factorB, factorC ) b );
-- 方案二
DELETE FROM TabTest WHERE id IN
(
-- MySQL Error 1093 – Can't specify target table for update in FROM clause
SELECT b.id FROM
(
SELECT tOuter.`id` FROM TabTest tOuter
INNER JOIN
(
SELECT tInner.id, tInner.factorA, tInner.factorB, tInner.factorC
FROM TabTest tInner
GROUP BY tInner.factorA, tInner.factorB, tInner.factorC
HAVING COUNT(1) > 1
) a
ON tOuter.`factorA` = a.`factorA`
AND tOuter.`factorB` = a.`factorB`
AND tOuter.`factorC` = a.`factorC`
WHERE tOuter.`id` <> a.`id`
)b
)

方案一: 数据量小时, 比较便捷

方案二: 数据量大时使用, 第一个方案在70万数据下试过, 5分钟出不来结果, 放弃, 使用第二种方案, 秒完.

删除特定影响因素(字段列)下的重复记录(MySQL)的更多相关文章

  1. python删除某一文件夹下的重复文件

    #2022-10-28 import hashlib import os import time def getmd5(filename): """ 获取文件 md5 码 ...

  2. SQL 中如何删除重复(每列数据都重复)的记录,只保留一行?

    如果数据表没有做好约束,那么数据库中难免会遇到数据重复的情况.今天就遇到这么个看起来简单却又费神的问题---如何去重. ------期间感谢微信公众号"有关SQL"的博主大牛提供的 ...

  3. oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...

  4. SQL 查询分析器操作(修改、添加、删除)表及字段等

    一.库操作1..创建数据库命令:create database <数据库名>例如:建立一个名为xhkdb的数据库mysql> create database xhkdb; 2.显示所 ...

  5. Pandas标记删除重复记录

    Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...

  6. (转)阿里云CentOS 7下配置及使用mysql

    一.安装 1 正确的安装方法: 众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本.所以我们需要先安装带 ...

  7. 关于重复记录和外部 ID (CRM导入提示已找到重复的查找引用)

    http://docs.huihoo.com/oracle/crm-on-demand/21/local/html/Release21_SimpleChinese/index.htm?toc.htm? ...

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

    假如表Users,其中ID为自增长. ID,Name,Sex 1 张三,男 2 张三,男 3 李四,女 4 李四,女 5 王五,男 --查找出最小行号ID的重复记录 select Name,Sex,C ...

  9. Oracle去除重复(某一列的值重复),取最新(日期字段最新)的一条数据

    转自 : http://blog.csdn.net/nux_123/article/details/45037719 问题:在项目中有一张设备检测信息表DEVICE_INFO_TBL, 每个设备每天都 ...

随机推荐

  1. C#反射技术的相关使用方法

    1.获取同一程序集的类型实例 无参数构造函数 Type t=Type.GetType("AppCode.Employee"); object emp=t.Assembly.Crea ...

  2. 解决安装rpm时lib冲突:libstdc++-2-libc6.1-1-2.9.0.so from install of compat-libstdc++-7.3-2.96.118 conflicts with file from ...

    sudo rpm -ivh xxx.rpm -aid --force [oracle@localhost Oracle]$ .i386.rpm compat-libstdc++-devel-.i386 ...

  3. OSX Mavericks下使用Synergy进行多台主机通过wifi共享键鼠问题的解决方法

    转帖: OSX 10.9 几天用下来还是遇到几处问题的:之前先是遇到了OSX Mavericks GM598无法从Appstore升级到完全正式版的问题,下载无反应,后来找到了解决方法,发在以下链接: ...

  4. C# 使用WIN32API设置外部程序窗口无边框

    使用代码 var wnd = win32.FindWindowA(null, "窗口标题"); Int32 wndStyle = win32.GetWindowLong(wnd, ...

  5. C#计算时间差值

    /// <summary> /// 计算时间差值 /// </summary> /// <param name="DateTime1">< ...

  6. 李洪强iOS开发之OC面向对象—多态

    OC面向对象—多态 一.基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态. 在使用多态是,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. ...

  7. hdu 1567 2006 (题意理解容易出错)

    #include<stdio.h> #include<vector> #include<algorithm> using namespace std; struct ...

  8. ios开发与安卓开源项目及库

    自己总结的iOS.mac开源项目及库 https://github.com/Tim9Liu9/TimLiu-iOS 自己总结的Android开源项目及库 https://github.com/Tim9 ...

  9. python urllib2的proxyhandler

    1. 再a方法中新建了个opener,使用了代理: proxydict = {} proxydict['http'] = "http://%s:%s"%(ip,port) #pri ...

  10. sublime使用

    显示侧板的文件夹: View -> Side Bar 菜单[project]->add folder to  project.把文件夹显示在左边的sidebar上. 安装插件: packa ...