mysql去重查询的方法有哪些
作者:RainLight
时间:2023-04-25
浏览:3
一、插入测试数据下图测试数据中user_name为lilei、zhaofeng的用户是重复数据。二、剔除重复数据方法1.方法一:使用distinct代码如下(示例):selectdistinctuser_name,email,addressfromt_user;如下图,已将数据剔重,重复数据仅保留1条。2.方法二:使用groupbySELECTuser_name,email,addressFROMt_userGROUPBYuser_name,email,address;如下图,已将数据剔重,重复数据仅保留
一、插入测试数据
下图测试数据中user_name为lilei、zhaofeng的用户是重复数据。

二、剔除重复数据方法
1.方法一:使用distinct
代码如下(示例):
select distinct user_name,email,address from t_user;
如下图,已将数据剔重,重复数据仅保留1条。

2.方法二:使用group by
SELECT 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_user WHERE 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 -- 该排序必须,否则结果会不对 ) result where rank = 1;
如下图,已将数据剔重,重复数据仅保留1条。

作者最新文章
音述AI生成歌曲如何一键制作歌词MV
2026-10-10 13:59
photoshop图层样式在哪
2026-10-04 13:45
photoshop路径工具在哪 怎么用
2026-09-16 13:46
PDF怎么批量添加页码?页码位置和起始页怎么设置?
2026-09-04 14:03
GitLab新手创建项目并推送第一次提交的操作指南
2026-09-03 06:05
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多










































