mysql删除重复记录,保存Id最小的一条

本文介绍了一种通过创建临时表来筛选并保留唯一记录的方法。该方法适用于需要从大型数据库中去除重复项的情况,并提供了三种不同的实现策略:1. 使用临时表进行数据筛选;2. 选择每组内的最小ID;3. 直接在原表上进行操作。


-- 尝试使用临时表,进程断掉,数据都没了


   CREATE  TABLE midtemp AS SELECT MIN(aid) AS minid FROM dede_addoninfos GROUP BY title;
   
   DELETE FROM dede_addoninfos WHERE aid NOT IN (SELECT minid  FROM midtemp);
   
   SELECT * FROM dede_addoninfos 



-- 处理shop表数据记录

  CREATE  TABLE shoptemp AS SELECT MIN(id) AS minid FROM dede_archives WHERE typeid=8  GROUP BY title;
  
  DELETE FROM dede_addonshop WHERE aid NOT IN (SELECT minid  FROM shoptemp);
  
    DELETE FROM dede_archives WHERE typeid=8 AND id NOT IN (SELECT minid  FROM shoptemp);


  SELECT *   FROM dede_addonshop  






-- 写的顺序:select ... from... where.... group by... having... order by..
-- 执行顺序:from... where...group by... having.... select ... order by...


/*一、方法1
1、创建一个临时表,选取需要的数据。
2、清空原表。
3、临时表数据导入到原表。
4、删除临时表。*/


-- 1、创建临时表midtemp


SELECT * FROM dede_addoninfos


CREATE TEMPORARY TABLE midtemp AS 
SELECT * FROM dede_addoninfos WHERE aid IN(
SELECT MIN(aid) FROM dede_addoninfos 
GROUP BY title
HAVING COUNT(title)>1
ORDER BY COUNT(title));


SELECT * FROM midtemp


-- 2、清空数据表


TRUNCATE TABLE dede_addoninfos 


SELECT * FROM dede_addoninfos 


-- 3 插入数据


INSERT INTO dede_addoninfos  SELECT *  FROM midtemp




-- 方法二、按name分组,把最小的id保存到临时表,删除id不在最小id集合的记录,如下


SELECT * FROM dede_arctiny


 CREATE TEMPORARY TABLE aidtedmp AS SELECT MIN(aid) AS MID  FROM dede_addoninfos GROUP BY title 
 
 SELECT  *  FROM aidtedmp
 
 DELETE FROM  dede_addoninfos WHERE aid  NOT IN ( SELECT MID  FROM aidtedmp)
 
 
 SELECT title,COUNT(title) FROM dede_addoninfos GROUP BY title  ORDER BY title  -- 6243
 
 -- 方法三、直接在原表上操作,sql语句如下
 


  DELETE FROM dede_addoninfos WHERE aid NOT IN (SELECT MID FROM (
  SELECT MIN(aid) AS MID  FROM dede_addoninfos GROUP BY title) s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值