美文网首页
mysql删除重复项保留一条最小的

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

作者: dittoyy3991 | 来源:发表于2024-05-29 10:52 被阅读0次
  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的条件以满足您的要求。

相关文章

网友评论

      本文标题:mysql删除重复项保留一条最小的

      本文链接:https://www.haomeiwen.com/subject/bcakqjtx.html