我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中的多字段相同数据去重复

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中的多字段相同数据去重复

MySQL多字段相同数据去重复

MySQL多字段去重复实际上是单字段去重复的衍生,原理就是把多字段数据通过子查询合并为单字段的数据表,再通过单字段数据group by 进行汇总,用 having把 count(字段) > 1的数据都显示出来,最后把查找到的重复数据 用min方法或者max方法获取最小id或者最大id来选择删除。

1、多字段转单字段

这里需要把id显示出来,后面有用到

SELECT id,CONCAT(`host`,path,params) AS uuid FROM static_url

2、把多字段合并为单字段

的查询结果放入子查询,查找存在重复的数据,并显示重复数

SELECT COUNT(a.id),a.uuid FROM (
  SELECT id,CONCAT(`host`,path,params) AS uuid FROM static_url
) a GROUP BY a.uuid HAVING COUNT(a.id) > 1

3、将查询到的重复id

来获取重复数据里最小的id

SELECT min(a.id) FROM (

  SELECT id,CONCAT(`host`,path,params) AS uuid FROM static_url

) a GROUP BY a.uuid HAVING COUNT(a.id) > 1

4、将获取到重复数据最小的id值

放入 IN内作为删除数据的条件

DELETE FROM static_url WHERE id IN(

  SELECT min(a.id) FROM (

    SELECT id,CONCAT(`host`,path,params) AS uuid FROM static_url

  ) a GROUP BY a.uuid HAVING COUNT(a.id) > 1

)

5、bug补充

如果直接执行步骤4的代码时,MySQL会卡住,会卡住,卡住,住!

虽然逻辑上来说没问题,但执行的时候嵌套过多子查询,就会出现问题,所以要把子查询数据拎出来再放入删除语句内

DELETE FROM static_url WHERE id IN(

 91383,26240,26256,26269,26129,26108,26029,26067,26095,26309,26595,51805,37459,32493,32417

)

6、将步骤4的代码多执行几次

直到执行结果显示没有删除到数据的时候才停止,因为重复数据不一定只重复一次,很可能重复好几次,每一次执行只能删除重复数据的最小id,不是只保留最大id  

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中的多字段相同数据去重复

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中的多字段相同数据去重复

目录mysql多字段相同数据去重复1、多字段转单字段2、把多字段合并为单字段3、将查询到的重复id4、将获取到重复数据最小的id值5、bug补充6、将步骤4的代码多执行几次总结MySQL多字段相同数据去重复MySQL多字段去重复实际上是单
2022-12-21

sql多字段怎么去除重复数据

要去除重复数据,可以使用DISTINCT关键字来选择唯一的数据组合。例如,假设有一个名为table_name的表,包含字段column1、column2和column3。要选择唯一的组合,可以使用以下SQL语句:SELECT DISTI
sql多字段怎么去除重复数据
2024-03-13

MySQL怎么根据多个字段去重

可以使用DISTINCT关键字来根据多个字段去重。在SELECT语句中,使用DISTINCT关键字,并指定多个字段,MySQL会返回唯一的记录,即根据指定的多个字段组合去重。例如,有一个名为"students"的表,包含以下字段:id, n
2023-10-11

SQL如何删除所有字段都相同的重复数据?

SQL Server数据库:有时候在处理数据时会遇到不加主键的表,导致数据表内出现了一模一样的数据,刚开始第一时间想到的方式是,把两条数据全部删除,然后再插入一条,但是这种可能数据量比较少的话,还可以,没有那么麻烦,一旦出现大量的数据需要处理,就有点浪费时间了
SQL如何删除所有字段都相同的重复数据?
2020-05-17

sql如何去掉某个字段重复的数据

要去掉某个字段重复的数据,可以利用SQL的DISTINCT关键字来实现。具体的SQL语句如下:SELECT DISTINCT column_name1, column_name2, ...FROM table_name;其中,colum
sql如何去掉某个字段重复的数据
2024-04-27

mysql多字段去重的方法是什么

MySQL中多字段去重的方法可以使用GROUP BY语句来实现。具体步骤如下:1. 使用SELECT语句选择需要去重的字段,并用逗号分隔多个字段。2. 使用GROUP BY语句将选择的字段进行分组。3. 可选的,使用HAVING语句指定筛选
2023-08-30

mysql中distinct多个字段去重怎么实现

在MySQL中,可以使用DISTINCT关键字来去重多个字段的记录。例如,如果想要去重field1和field2两个字段的记录,可以使用以下语法:SELECT DISTINCT field1, field2FROM your_table
mysql中distinct多个字段去重怎么实现
2024-05-22

mysql中怎么用distinct对多个字段去重

在MySQL中可以使用DISTINCT关键字对多个字段进行去重。例如,假设有一个名为table_name的表,包含字段field1和field2,可以使用以下语法来对field1和field2字段进行去重:SELECT DISTINCT
mysql中怎么用distinct对多个字段去重
2024-04-09

oracle怎么去除某个字段重复数据

要去除某个字段重复数据,可以使用Oracle SQL中的DISTINCT关键字。通过在SELECT语句中使用DISTINCT关键字,可以返回唯一的值,并去除重复数据。例如,假设有一个表格名为table_name,其中有一个字段为field
oracle怎么去除某个字段重复数据
2024-03-14

mysql中distinct多个字段去重的方法是什么

在MySQL中,可以使用GROUP BY子句来实现多个字段的去重。具体的语法如下:SELECT DISTINCT column1, column2, ...FROM table_nameGROUP BY column1, column
mysql中distinct多个字段去重的方法是什么
2024-04-09

mysql怎么删除字段重复的数据

要删除MySQL表中重复的数据,可以使用以下步骤:首先,使用 SELECT 语句查询表中的重复数据,并确定哪些字段是重复的。SELECT column1, column2, COUNT(*)FROM your_tableGROUP BY
mysql怎么删除字段重复的数据
2024-04-09

mysql怎么查找重复字段的数据

要查找重复字段的数据,可以使用如下的SQL查询语句:SELECT field_name, COUNT(field_name) as countFROM table_nameGROUP BY field_nameHAVING COUN
mysql怎么查找重复字段的数据
2024-04-09

mysql多个字段去重的方法是什么

在MySQL中,可以使用DISTINCT关键字来去重多个字段。例如,假设有一个名为table_name的表,包含字段column1和column2,可以使用以下语句来去重这两个字段的值:SELECT DISTINCT column1, c
2023-10-23

Mysql查询某字段值重复的数据个数

select gongchengid,count(*) as count from erp_wangongbg group by gongchengid having count>1;
Mysql查询某字段值重复的数据个数
2019-11-21

编程热搜

目录