mysql删除表条件重复数据_MySQL删除数据表中重复数据

今天遇到一个问题,数据表的数据有重复的,关键原因在于新增数据时,没有根据条件先判断数据是否存在,当数据存在时进行有关条件的更新,不存在时做新增数据。

对于表中已经存在的数据处理办法的方法:

1.先根据条件进行统计数据重复率。

2.查询那一些数据是重复的,将重复数据放在一张表中用于条件对比将源数据中的重复数据删除(mysql中使用一张表,sqlserver中可以使用临时表或者表变量存放数据)。

3.根据条件关联将重复数据删除。

可以先查询重复数据的总数:

select sum(count)

from(

select bidsectioncode,count(bidsectioncode) as count from businessdata.business_bidsection

group by bidsectioncode having count>1

order by create_time desc

) as d;

查出数据库中的重复记录的数据中的一条,这个不难,很简单的,sql语句如下:

select * from businessdata.business_bidsection

where bidsectioncode in (select bidsectioncode from businessdata.business_bidsection group by bidsectioncode having count(bidsectioncode) > 1)

and id in (select min(id) from businessdata.business_bidsection group by bidsectioncode having count(bidsectioncode)>1)

这些都是不重复的,换句话说都是要保留的,不被删掉的,而其余与这些结果中name相同的应该被删掉。

也就是说将上边那个sql语句id后边加一个not ,查出来的结果就是要删掉的。

select * from businessdata.business_bidsection

where bidsectioncode in (select bidsectioncode from businessdata.business_bidsection group by bidsectioncode having count(bidsectioncode) > 1)

and id not in (select min(id) from businessdata.business_bidsection group by bidsectioncode having count(bidsectioncode)>1)

我把这些需要删掉的存到另外一个表里,然后我新建一个business_bidsection_test表,结构复制business_bidsection的结构就好了。

复制一个创建语句到test表中。

然后将重复数据添加到test表中,插入语句是:

insert into business_bidsection_test

(select * from businessdata.business_bidsection

where bidsectioncode in (select bidsectioncode from businessdata.business_bidsection group by bidsectioncode having count(bidsectioncode) > 1)

and id not in (select min(id) from businessdata.business_bidsection group by bidsectioncode having count(bidsectioncode)>1));

那接下来做的就是删掉business_bidsection表里边与business_bidsection_test表的id相同的数据。

delete a.* from business_bidsection a, business_bidsection_test b where a.id = b.id ;

这样的结果就是完全不重复的,但是id是不连续的。

删除oracle 表中重复数据sql语句、保留rowid最小的一条记录

delete from tablename a where rowid > ( select min(rowid) from table_name b where b.id = a.id and ...

MySQL 数据库删除表中重复数据

采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据.完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法. N.B. 删除数据表的重复数据时,请先备份 ...

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1 ...

ROWID面试题-删除表中重复数据(重复数据保留一个)

/* ROWID是行ID,通过它一定可以定位到r任意一行的数据记录 ROWID DNAME DEPTNO LOC ------------------ ------------------------ ...

向mysql数据表中插入数据失败的原因

1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...

DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)

/// /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// ///

将数据表中的数据添加到ComboBox控件中

实现效果: 知识运用: ComboBox控件的DataSource 属性 //获取或设置ComboBox的数据源 public Object DataResouce{get;set;} //属性值:任 ...

code first网站发布后数据表中没有数据问题

code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public  class Configuratio ...

查询和删除表中重复数据sql语句

1.查询表中重复数据.select * from peoplewhere peopleId in (select   peopleId   from   people   group   by   ...

随机推荐

Win下,通过Jstack截取Java进程中的堆栈信息

在Java软件的使用过程中,有时会莫名的出现奇怪的问题.而这些问题常常无法使用日志信息定位,这时我们就需要通过查看进程内部线程的堆栈调用关系来分析问题出在哪里. 举个例子,当我们在做某个操作时,莫名的 ...

xp-win7-win8的基础到精通教程-系统优化减肥教程-windos装mac

是否还在使用别人封装的系统?是否还在担心下载后的系统是有病毒的?还在为 安装好新系统后,里面安装的软件全是自己不需要的?担心流氓软件绑定浏览器主页?担心 系统重装后,自己所有的编程软件都需要重新安装? ...

[素材资源] Android开发性能优化简介(非常不错的)

转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&amp ...

oracle 里面定时执行任务,比如存储过程内容等

DECLARE   job_no_ NUMBER;   BEGIN      DBMS_JOB.SUBMIT(job_no_,                   'proc_qszx_dw_sc(' ...

Educational Codeforces Round 9

Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...

Python之路【第三篇】:模块

定义: 包:包含__init__.py文件.模块(也是.py文件) 当包被其它模块调用时,首先会执行该包下的__init__文件 包含有模块,包可以有多级 模块的导入: import from...i ...

[转载]学习Javascript闭包(Closure)

学习Javascript闭包(Closure)     源地址: http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures ...

CSS之链接

改变链接样式 当设置为若干链路状态的样式,也有一些顺序规则: a:hover 必须跟在 a:link 和 a:visited后面 a:active 必须跟在 a:hover后面

MDX Cookbook 10 - 计算 Year To Date 的 Running Total(YTD 与 PeriodsToDate 的区别)

在这个小节中我们将计算度量值的 Year To Date 的值,也就是计算从年开始到当前时间成员为止的度量值的累加结果. 下面的这个查询显示了所有以周为单位的 Reseller Sales Amoun ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MySQL删除重复数据,可以按照以下步骤进行操作: 1. 创建一个临时,与原始具有相同的结构。 2. 使用SELECT语句从原始查询出需要更新的数据,并将其插入到临时。可以使用GROUP BY和HAVING子句来识别重复的记录。 3. 删除原始与临时重复记录相对应的行。可以使用DELETE语句和子查询来实现这一步骤。 4. 最后,您可以选择删除临时。 下面是一个示例SQL语句,用于在MySQL删除重复数据: ``` -- 新增测试 CREATE TABLE basic_farmer ( id INT(11), user_name VARCHAR(25), id_card INT(11) ); -- 删除重复数据 DELETE FROM basic_farmer WHERE id IN ( SELECT id FROM ( SELECT a.id FROM basic_farmer a LEFT JOIN ( SELECT id_card, MIN(id) id FROM basic_farmer GROUP BY id_card HAVING COUNT(id_card) > 1 ) b ON a.id_card = b.id_card WHERE a.id != b.id ) AS tt ); ``` 请注意,上述SQL语句名和字段名需要根据实际情况进行调整,以适应您的数据库结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL查询、删除重复记录的方法大全](https://blog.csdn.net/doublepg13/article/details/127613922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySql删除重复数据](https://blog.csdn.net/weixin_56567361/article/details/127494879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值