二、剔除重复数据方法1.方法一:使用distinct代码如下(示例):
select distinct user_name,email,address from t_user;
如下图,已将数据剔重,重复数据仅保留1条。
2.方法二:使用group byselect user_name,email,address from t_user group by user_name, email, address;
如下图,已将数据剔重,重复数据仅保留1条。
3.方法三:使用开窗函数(1)如果你的数据库是mysql8以上版本你可以直接使用开窗函数row_number()
select *from( select t.*, row_number() over(partition by user_name order by last_login desc) rn from table as t ) as t_userwhere rn = 1;
(2)如果你的数据库版本低于mysql8,使用类row_number()方法
select user_name, email, address from ( select b.*, @rownum := @rownum+1 ,-- 定义用户变量@rownum来记录数据的行号 if(@pdept=b.user_name,@rank:=@rank+1,@rank:=1) as rank,-- 如果当前分组user_name和上一次分组user_name相同,则@rank(对每一组的数据进行编号)值加1,否则表示为新的分组,从1开始 @pdept:=b.user_name -- 定义变量@pdept用来保存上一次的分组id from (select * from t_user) b , (select @rownum :=0 , @pdept := null ,@rank:=0) c -- 初始化自定义变量值 order by b.user_name,b.last_login desc -- 该排序必须,否则结果会不对) resultwhere rank = 1;
如下图,已将数据剔重,重复数据仅保留1条。
以上就是mysql去重查询的方法有哪些的详细内容。
