前言 在使用SQL提数的时候,常会遇到表内有重复值的时候,就需要做去重,本文归类了常用方法。 ?? 1.distinct 题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出
前言在使用SQL提数的时候,常会遇到表内有重复值的时候,就需要做去重,本文归类了常用方法。 ?? 1.distinct
示例:user_profile
????????小贴士:
???????? 拓展:
?? 2.group by???????? 举个栗子,现有这样一张表 task
题目:列出任务总数 ????????????????根据示例,查询方法如下: 第1步:列出 task_id 的所有唯一值(去重后的记录,null也是值)
第二步: 任务总数
?? 3.row_number 窗口函数???????? 举个栗子,现有这样一张表 task
题目:查询整个表重复的数据 ????????根据示例,查询方法如下: – 在支持窗口函数的 sql 中使用
????????小贴士: MySQL8.0 中可以利用 ROW_NUMBER(),DENSE_RANK(),RANK() 三个窗口函数来实现排序 需要注意的一点是 as 后的别名,千万不要与前面的函数名重名,否则会报错 下面给出这三种函数实现排名的案例: –三条语句对于上面三种排名
– 一条语句也可以查询出不同排名
?? 4.删除重复数据创建测试数据 我们创建一个人员信息表并在里面插入一些重复的数据
题目:数据库中存在重复记录,删除保留其中一条 我们发现除了自增长ID不同以为,有几条其他字段都重复的数据出现 ???? 第一步:找出重复的数据
????????小贴士: HAVING将分组后统计出来的数量大于1的数据行,就是我们要找的重复数据 上面用Max函数或者Min函数均可,只是为了保证取出来的数据的唯一性。 ???? 第二步:删除重复的数据其实我们数据库中最后要保留的结果就是第二步中查询出来的数据, 我们把其他的数据删除即可。 怎么删除呢?我们使用ID来排除。
执行完后重新查询Person表结果如下 马六因为只有一条记录,所以没有参与去重,直接显示。 |
2021-06-02
2021-06-05
2022-06-27
2022-10-12
2019-09-11