SELECT*from brand WHERE brandName IN(select brandName from brand GROUPBY brandName HAVINGCOUNT(brandName)>1 #条件是数量大于1的重复数据
)
1.
2.
3.
使用SQL删除多余的重复数据,并保留Id最小的一条唯一数据:
注意点:
错误SQL:DELETE FROM brand WHERE brandName IN(select brandName from brand GROUPBY brandName HAVINGCOUNT(brandName)>1)AND Id NOTIN(select MIN(Id)from brand GROUPBY brandName HAVINGCOUNT(brandName)>1)
1.
2.
提示:You can't specify target table 'brand' for update in FROM clause 不能为FROM子句中的更新指定目标表“brand”
DELETEFROM brand WHERE brandName IN(SELECT brandName FROM(SELECT brandName FROM brand GROUPBY brandName HAVINGCOUNT(brandName)>1) e)AND Id NOTIN(SELECT Id FROM(SELECT MIN(Id)AS Id FROM brand GROUPBY brandName HAVINGCOUNT(brandName)>1) t)
#查询显示重复的数据都是显示最前面的几条,因此不需要查询是否最小值
1.
2.
3.
4.
更加简单快捷的方式:
这是老飞飞的前辈给了一个更加方便,简洁的写法(非常感谢大佬的方法):
DELETE FROM brand WHERE Id NOT IN (SELECT Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName) t)
1.
这句的意思其实就是,通过分组统计出数据库中不重复的最小数据id编号,让后通过 not in 去删除其他重复多余的数据。