iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >详解mysql数据去重的三种方式
  • 858
分享到

详解mysql数据去重的三种方式

2024-04-02 19:04:59 858人浏览 安东尼
摘要

目录一、背景二、数据去重三种方法使用1.​通过Mysql DISTINCT:去重(过滤重复数据)2.group by3.row_number窗口函数三、总结一、背景 最近在和系统模块

一、背景

最近在和系统模块做数据联调,其中有一个需求是将两个角色下的相关数据​对比后将最新的数据返回出去,于是就想到了去重,再次做一个总结。

二、数据去重三种方法使用

1.​通过mysql DISTINCT:去重(过滤重复数据)

​ 1.1.在使用 mysql SELECT 语句查询数据的时候返回的是所有匹配的行。

SELECT t.age FROM t_user t

可以看到查询结果返回了 10 条记录,其中有一些重复的 age 值,有时出于对数据分析的要求,需要消除重复的记录值。

1.2.DISTINCT 关键字指示 MySQL 消除重复的记录值。

语法格式为:

SELECT DISTINCT <字段名> FROM <表名>;

SELECT DISTINCT t.age FROM t_user t

 由运行结果可以看到,这次查询结果只返回了 5 条记录的 age 值,且没有重复的值。

ps:

其中,“字段名”为需要消除重复记录的字段名称,多个字段时用逗号隔开。

使用 DISTINCT 关键字时需要注意以下几点:

DISTINCT 关键字只能在 SELECT 语句中使用。

在对一个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前面。

如果 DISTINCT 关键字后有多个字段,则会对多个字段进行组合去重,也就是说,只有多个字段组合起来完全是一样的情况下才会被去重。

2.group by

SELECT t.age FROM t_user t GROUP BY t.age;

3.row_number窗口函数

 语法格式为:

row_number() over (partition by <用于分组的字段名> order by <用于组内排序的字段名>)

项目使用的去重:​

select * from (select t.*,row_number() over(partition by t.children_id  order by t.update_time DESC) rn       
from mdm_data_authority_view_info t where t.DATA_CLASS_ID = '分类id' AND t.DATA_ROLE_ID 
IN ( '角色id', '角色id' ))              
where rn = 1;  

三、总结

到此这篇关于详解mysql数据去重的三种方式的文章就介绍到这了,更多相关mysql数据去重内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 详解mysql数据去重的三种方式

本文链接: https://www.lsjlt.com/news/150943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作