mysql 去重留一
admin
2023-02-07 21:00:03
0

首先先分析一下 我们现在的目的 是 查询到这俩张表的所有数据 然后进行删除重复记录 每条数据只保留一条

第一步:
查询以下俩张表的重复记录 (关键字段重复>1)
ks_examcity 、 ks_examdistrict

select * from ks_examcity group by examSubjectID,city,province having count(examSubjectID)>1;
select * from ks_examdistrict group by examSubjectID,district,city having count(examSubjectID)>1;
第二步:
   查询这两张表中 每条记录的第一条记录 (每条记录重复中的第一条 id最小)
select min(id)
  from ks_examcity
 group by examSubjectID, city, province
having count(examSubjectID)> 1

SELECT min(id)
  FROM `ks_examdistrict`
 GROUP BY `examSubjectID`, `district`, `city`
HAVING COUNT(`examSubjectID`)> 1
第三步:
    联查: 查询所有的重复数据以及重复记录中第一条以外的数据
select `examSubjectID`
  from ks_examcity
 group by examSubjectID, city, province
having count(examSubjectID)> 1 )
   and id not in(
select min(id)
  from ks_examcity
 group by examSubjectID, city, province
having count(examSubjectID)> 1

SELECT `examSubjectID`
  from `ks_examdistrict`
 group by `examSubjectID`, `district`, `city`
HAVING COUNT(`examSubjectID`)> 1)
   and id not in(
SELECT min(id)
  FROM `ks_examdistrict`
 GROUP BY `examSubjectID`, `district`, `city`
HAVING COUNT(`examSubjectID`)> 1
第四步:  查询以上查询到的数据的所有id  并以查询到的id作为条件 进行删除

delete from `ks_examcity`  where id IN(  select id from (
select  id
  from ks_examcity
 where `examSubjectID` in(
select `examSubjectID`
  from ks_examcity
 group by examSubjectID, city, province
having count(examSubjectID)> 1 )
   and id not in(
select min(id)
  from ks_examcity
 group by examSubjectID, city, province
having count(examSubjectID)> 1)) as  tmpresult)

======================================================

DELETE
  FROM `ks_examdistrict`
 where id IN(
SELECT id
  from(
select id
  from `ks_examdistrict`
 where `examSubjectID` in(
SELECT `examSubjectID`
  from `ks_examdistrict`
 group by `examSubjectID`, `district`, `city`
HAVING COUNT(`examSubjectID`)> 1)
   and id not in(
SELECT min(id)
  FROM `ks_examdistrict`
 GROUP BY `examSubjectID`, `district`, `city`
HAVING COUNT(`examSubjectID`)> 1)) as tmpresult)

参考文章 :https://www.cnblogs.com/jdbeyond/p/8157224.html

相关内容

热门资讯

【第一资讯】“南通长牌真的有挂... 网上科普关于“南通长牌有没有挂”话题很是火热,小编也是针对南通长牌作*弊开挂的方法以及开挂对应的知识...
今日重大通报“情怀娱乐真的有挂... 您好:情怀娱乐这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
今日重磅消息“陕麻圈开挂器?”... 您好:陕麻圈这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏中...
我来教教您“白金岛放炮罚可以开... 有 亲,根据资深记者爆料白金岛放炮罚是可以开挂的,确实有挂(咨询软件无需...
玩家分享攻略“葫芦娃哥们怎么开... 网上科普关于“葫芦娃哥们有没有挂”话题很是火热,小编也是针对葫芦娃哥们作*弊开挂的方法以及开挂对应的...
重磅消息“圣盛晃晃麻将开挂器?... 家人们!今天小编来为大家解答圣盛晃晃麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
今日重大发现“牵手跑胡子辅助器... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
玩家最新攻略“衡阳跑胡子怎么装... 有 亲,根据资深记者爆料衡阳跑胡子是可以开挂的,确实有挂(咨询软件无需打...
今日重大发现“芒果竞技究竟有挂... 今日重大发现“芒果竞技究竟有挂吗?”(原来真的有挂)您好,芒果竞技这个游戏其实有挂的,确实是有挂的,...
玩家分享攻略“永盈怎么开挂?”... 家人们!今天小编来为大家解答永盈透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很多人...