当前位置: 首页> 房产> 建筑 > 青岛制作企业网站_智加设计公司_腾讯nba新闻_新手网络推广怎么干

青岛制作企业网站_智加设计公司_腾讯nba新闻_新手网络推广怎么干

时间:2025/9/7 6:47:54来源:https://blog.csdn.net/siyubaobao1404/article/details/146455865 浏览次数:0次
青岛制作企业网站_智加设计公司_腾讯nba新闻_新手网络推广怎么干

在数据库管理中,处理重复数据是一项常见的任务。本文将详细介绍如何在 MySQL 数据库里,针对 test 表中 fd 和 fe 字段存在的重复数据进行处理,分别实现保留一条和两条数据的操作。

表结构与需求概述

假设 test 表包含三个字段:id(作为主键)、fd 和 fe。其中,fd 和 fe 字段存在重复值,我们的目标是分别保留每组重复数据中的一条和两条记录,同时删除其余的重复数据。

保留每组重复数据中的一条记录

思路

我们可以使用子查询结合 MIN(id) 函数,按 fd 和 fe 字段分组,找出每组中 id 最小的记录,然后删除 id 不在这些最小 id 范围内的记录。

SQL 代码

DELETE 
FROMtest 
WHEREid NOT IN (SELECTid FROM( SELECT min( id ) id FROM `test` GROUP BY fd, fe HAVING count( id ) > 1 ORDER BY id ) a );

代码解释

  1. 子查询SELECT min( id ) id FROM test GROUP BY fd, fe HAVING count( id ) > 1 按 fd 和 fe 分组,找出每组中 id 最小的记录,并且只考虑重复记录数大于 1 的组。
  2. 外层查询DELETE FROM test WHERE id NOT IN (...) 删除 id 不在子查询结果中的记录,从而保留每组中的一条记录。

 

保留每组重复数据中的两条记录

思路

为了保留每组中的两条记录,我们可以分别找出每组中 id 最小和最大的记录,然后使用 UNION 操作符将它们合并,最后删除 id 不在合并结果中的记录。

SQL 代码

DELETE 
FROMtest 
WHEREid NOT IN (SELECTid FROM( SELECTid FROMtest WHEREid IN (SELECTid FROM( SELECT min( id ) id FROM `test` GROUP BY fd, fe HAVING count( id ) > 2 ORDER BY id ) a UNION SELECTid FROM( SELECT max( id ) id FROM `test` GROUP BY fd, fe HAVING count( id ) > 2 ORDER BY id ) b )) c);

代码解释

  1. 子查询 aSELECT min( id ) id FROM test GROUP BY fd, fe HAVING count( id ) > 2 找出每组中 id 最小的记录,只考虑重复记录数大于 2 的组。
  2. 子查询 bSELECT max( id ) id FROM test GROUP BY fd, fe HAVING count( id ) > 2 找出每组中 id 最大的记录,同样只考虑重复记录数大于 2 的组。
  3. UNION 操作:将子查询 a 和 b 的结果合并,得到每组中 id 最小和最大的记录。
  4. 外层查询DELETE FROM test WHERE id NOT IN (...) 删除 id 不在合并结果中的记录,从而保留每组中的两条记录。
关键字:青岛制作企业网站_智加设计公司_腾讯nba新闻_新手网络推广怎么干

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: