- 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最小的一条数据。
- 可以使用子查询
当然,您也可以使用子查询来完成这个任务。以下是使用子查询的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之外的其他记录。
- 可以使用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的条件以满足您的要求。
网友评论