删除特定影响因素(字段列)下的重复记录(MySQL)
;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)的更多相关文章
- python删除某一文件夹下的重复文件
#2022-10-28 import hashlib import os import time def getmd5(filename): """ 获取文件 md5 码 ...
- SQL 中如何删除重复(每列数据都重复)的记录,只保留一行?
如果数据表没有做好约束,那么数据库中难免会遇到数据重复的情况.今天就遇到这么个看起来简单却又费神的问题---如何去重. ------期间感谢微信公众号"有关SQL"的博主大牛提供的 ...
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...
- SQL 查询分析器操作(修改、添加、删除)表及字段等
一.库操作1..创建数据库命令:create database <数据库名>例如:建立一个名为xhkdb的数据库mysql> create database xhkdb; 2.显示所 ...
- Pandas标记删除重复记录
Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...
- (转)阿里云CentOS 7下配置及使用mysql
一.安装 1 正确的安装方法: 众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本.所以我们需要先安装带 ...
- 关于重复记录和外部 ID (CRM导入提示已找到重复的查找引用)
http://docs.huihoo.com/oracle/crm-on-demand/21/local/html/Release21_SimpleChinese/index.htm?toc.htm? ...
- 删除表中多余的重复记录(多个字段),只留有rowid最小的记录
假如表Users,其中ID为自增长. ID,Name,Sex 1 张三,男 2 张三,男 3 李四,女 4 李四,女 5 王五,男 --查找出最小行号ID的重复记录 select Name,Sex,C ...
- Oracle去除重复(某一列的值重复),取最新(日期字段最新)的一条数据
转自 : http://blog.csdn.net/nux_123/article/details/45037719 问题:在项目中有一张设备检测信息表DEVICE_INFO_TBL, 每个设备每天都 ...
随机推荐
- 矩阵快速幂 POJ 3070 Fibonacci
题目传送门 /* 矩阵快速幂:求第n项的Fibonacci数,转置矩阵都给出,套个模板就可以了.效率很高啊 */ #include <cstdio> #include <algori ...
- 李洪强iOS开发之添加手势
李洪强iOS开发之添加手势 02 - 添加手势
- lintcode:接雨水
接雨水 给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水. 如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返 ...
- mysql+heartbeat+DRBD+LVS集群
- iOS开发--git
http://blog.chinaunix.net/uid-26495963-id-3474178.html 相关知识 gnu interactive tools 一句话概括git: Git is a ...
- nodejs 操作mysql
这篇文章主要介绍了nodejs中操作mysql数据库示例,本文演示了如何在NodeJS中创建创建mysql连接.mysql数据库.插入数据.查询数据等功能,需要的朋友可以参考下 引言: 继前面的No ...
- Sublime Text 2安装汉化破解、插件包安装教程
原文地址: Sublime Text 2安装汉化破解.插件包安装教程_百度经验 http://jingyan.baidu.com/article/ff4116259b057c12e48237b8.ht ...
- 传统三层结构和MVC之于贫血模式和充血模式以及领域建模
相信很多人跟我一样,一开始在使用贫血模式的三层结构:抽象出来一个贫血的实体封装,然后把对模型的所有操作,分离出来,分离到BLL层去,然后DALL层负责把这些操作和数据库产生映射,负责读写删改的操作 ...
- USACO Section 3.1: Agri-Net
minimal spanning tree的经典题 /* ID: yingzho1 LANG: C++ TASK: agrinet */ #include <iostream> #incl ...
- javascript 高效按字节截取字符串
做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑. 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字 ...