重复数据删除掉,只保留一条

原理:
1、选出重复值。
2、根据重复值,选出重复的行
3、根据重复值,分组求最小id(最大id也一样)
4、从重复行中,去掉最小id对应的行。

select * from
(
  select
  *
  from t_user where user_account in 
  (select user_account from t_user group by user_account having count(1) >1) 	-- 重复的数据
) t  -- 划定数据范围(不划定就是全表肯定是不对的)
where
id not in 
(select min(id) from t_user group by user_account having count(1) >1) -- 重复的数据中,分组选出最小id

注:
1、in 后面的select语句要加 小括号。
2、划定数据范围这个不要省。

你可能感兴趣的:(mysql)