mysql删除重复项保留一条最小的

  1. mysql,表a删除重复项(根据id2判断重复),仅保留id1最小的一条,表a还有个条件,id3=4,sql怎么写
您可以使用以下SQL语句来删除表a中的重复项,仅保留id1最小的一条:

DELETE t1 FROM a t1
INNER JOIN a t2 ON t1.id2 = t2.id2  and t1.id3=4 AND t1.id1 > t2.id1;
这条语句使用了自连接和内联结合来找到重复项,并且只保留id1最小的一条数据。
  1. 可以使用子查询
当然,您也可以使用子查询来完成这个任务。以下是使用子查询的SQL语句来删除表a中的重复项,仅保留id1最小的一条:

DELETE FROM a 
WHERE id1 NOT IN (SELECT MIN(id1) FROM a WHERE id3 = 4 GROUP BY id2) 
AND id3 = 4;
这条语句使用子查询找到每个id2对应的最小id1,然后利用NOT IN子句来删除除了最小id1之外的其他记录。
  1. 可以使用HAVING COUNT(*)来删除重复项
当然,您可以使用HAVING COUNT(*)来删除重复项,同时保留id3=4的条件。以下是使用HAVING COUNT(*)的SQL语句:


DELETE FROM a 
WHERE id1 NOT IN (
    SELECT MIN(id1) 
    FROM a 
    WHERE id3 = 4 
    GROUP BY id2 
    HAVING COUNT(*) > 1
) 
AND id3 = 4;
这条语句使用子查询找到每个id2对应的最小id1,并且通过HAVING COUNT(*) > 1筛选出有重复项的id2。然后,利用NOT IN子句删除除了最小id1之外的其他记录,并且在主查询中加上id3 = 4的条件以满足您的要求。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容