mysql 数据去重的三种方式[实战]

MySQL 过滤数据 深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。 阅读详情

一、背景。

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

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

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???????

三、总结。

感谢大家的关注 分享 收藏 看的人越多,表哥推送的就越猛!关注的人越多,表哥的激情更旺盛。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

mysql查询的三种方法 阅读详情

相关推荐

MySQL 中如何

MySQL 中如何

学无止境 2712

mysql 复 Select中DISTINCT关键字的用法

 在使用mysql时,有时需要查询出某个字段不复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的复记录只保留一条,但往往只用它来返回不复记录的条数,而不是用它来返回不记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二循环查询来解决,而 这样对于一个数据量非常大的

I am ready! 11万+

mysql的几种方式

1. distinct select distinct 列名 from 表名 2. row_number select *, row_number() over (partition by 想的列名 order by 列名) as row_num from 表名 where row_num = 1 3.group by select 列名 from 表名 group by 列名 复量多时,GROUP BY总的处理效率比DISTINCT高,复量低时,DISTINCT就比GROUP BY快一

灵豸 6467

MySQL三种方式比较

关于MySQL方式的简单探究

weixin_44359746的博客 6279

SQL:数据三种方法

MYSQL方法

eagle89的专栏 8万+

SQL中的三种方法

在使用SQL提数的时候,常会遇到表内有复值的时候,比如我们想得到 uv (独立访客),就需要做。 在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL、Oracle等等) 中还可以使用 row_number 窗口函数进行。 举个栗子,现有这样一张表 task: task_id order_id start_tim...

何足道的博客 13万+

Mysql查询(根据指定字段

在日常数据查询中,多有需要进行数据的查询,或删除数据的情况,以下罗列集中数据查询: 1、根据全部字段的查询: select distinct * from table 2、根据某些字段的查询(不考虑查询其他字段) select distinct c_name,c_year,c_month from table 或者: select c_name,c_year,c_month from table group by c_name,c_year,c_month 3、根据

王世洪的博客 15万+

详细分析Mysql的几种方法(附Demo)

MySQL中,SELECT DISTINCT 和 GROUP BY 可以用来复记录,二者有相似的功能,但在某些情况下有所不同

码农研究僧的博客 7453

mysql中对数据

最近面试有家公司问了个mysql数据,自己对于mysql一般多用于增删改查,所以私下来尝试了mysql数据总结 DISTINCT 在使用MySQL时,有时需要查询出某个字段不复的记录,这时可以使用mysql提供的distinct这个关键字来过滤复的记录,但是实际中我们往往用distinct来返回不复字段的条数(count(distinct id)),其原因是distinct只能返...

L X D的博客 2万+

必会!MySQL3种方法​

在使用SQL提数的时候,常会遇到表内有复值的时候,比如我们想得到 uv (独立访客),就需要做。 在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL、Oracle等等) 中还可以使用 row_number 窗口函数进行

2401_83384536的博客 1547

mysql的几种方案

mysql的几种方案,有唯一id和没有唯一id等

ask_baidu的博客 1348

MySQL中查询、删除复记录的方法大全

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性。

2401_83641314的博客 1万+

mysql

在这个例子中,SELECT 语句选择了表 table1 中的列 column1 和 column2,并使用 GROUP BY 子句来将结果分组,并在分组后使用 DISTINCT ON 子句来复的行,其中 DISTINCT ON (column1, column2) 指定了使用 column1 和 column2 列来过滤复的行。使用 GROUP BY 子句的方法是,在 SELECT 语句中使用 GROUP BY 子句来将结果分组,并在分组后使用 DISTINCT 关键字来复的行。

qq_36016297的博客 1554
上一篇: MySQL 操作语句大全(详细)
下一篇: MySQL 数据库基础知识(系统化一篇入门)
m0_55070913
博客等级 码龄6年 6万+粉丝 475原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值