SQL去重方法有哪些
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这篇文章给大家分享的是有关SQL去重方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立
千家信息网最后更新 2025年02月24日SQL去重方法有哪些
这篇文章给大家分享的是有关SQL去重方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。
在 MySQL 中通常是使用 distinct
或 group by
子句,但在支持窗口函数的 sql(如Hive
SQL
、Oracle
等等) 中还可以使用 row_number 窗口函数进行去重。
举个栗子,现有这样一张表 task:
备注:
task_id
: 任务id;order_id
: 订单id;start_time
: 开始时间
注意:一个任务对应多条订单
我们需要求出任务的总数量,因为 task_id 并非唯一的,所以需要去重:
distinct
-- 列出 task_id 的所有唯一值(去重后的记录)select distinct task_idfrom Task;-- 任务总数select count(distinct task_id) task_numfrom Task;
distinct
通常效率较低。它不适合用来展示去重后具体的值,一般与 count
配合用来计算条数。distinct
使用中,放在 select
后边,对后面所有的字段的值统一进行去重。比如distinct
后面有两个字段,那么 1,1 和 1,2 这两条记录不是重复值 。
group by
-- 列出 task_id 的所有唯一值(去重后的记录,null也是值)-- select task_id-- from Task-- group by task_id;-- 任务总数select count(task_id) task_numfrom (select task_id from Task group by task_id) tmp;
row_number
row_number 是窗口函数,语法如下:
row_number() over (partition by <用于分组的字段名> order by <用于组内排序的字段名>)
其中partition by
部分可省略。
-- 在支持窗口函数的 sql 中使用select count(case when rn=1 then task_id else null end) task_numfrom (select task_id , row_number() over (partition by task_id order by start_time) rn from Task) tmp;
此外,再借助一个表 test 来理理 distinct 和 group by 在去重中的使用:
-- 下方的分号;用来分隔行select distinct user_idfrom Test; -- 返回 1; 2select distinct user_id, user_typefrom Test; -- 返回1, 1; 1, 2; 2, 1select user_idfrom Testgroup by user_id; -- 返回1; 2select user_id, user_typefrom Testgroup by user_id, user_type; -- 返回1, 1; 1, 2; 2, 1select user_id, user_typefrom Testgroup by user_id; -- Hive、Oracle等会报错,mysql可以这样写。-- 返回1, 1 或 1, 2 ; 2, 1(共两行)。只会对group by后面的字段去重,就是说最后返回的记录数等于上一段sql的记录数,即2条-- 没有放在group by 后面但是在select中放了的字段,只会返回一条记录(好像通常是第一条,应该是没有规律的)
感谢各位的阅读!关于"SQL去重方法有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
任务
函数
字段
方法
内容
总数
时候
更多
篇文章
订单
支持
不错
实用
两个
中放
分号
备注
多条
子句
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
茂名速渡网络技术
flash必须要做数据库吗
x58 主板能上服务器内存么
数据库通俗
进入服务器硬件管理BMC
全民公敌网络安全
上海信息软件开发服务是什么
web服务器多站点
宝山区推广软件开发咨询热线
陕西首创复星网络技术有限公司
网络安全教育沙画视频
内蒙古互联网养老软件开发系统
dp格式的数据库文件如何打开
odva网络安全标准
长沙忙起来互联网科技有限公司
简述数据库设计的包括哪些阶段
数据库教程书
网络安全 flag值
软件开发个人简历封面下载
女生做网络安全累不累
全球品牌数据库可以干什么
软件开发企业培训班
服务器经常有广告弹出
网络技术提升美战地救护能力
企业网络安全服务商
上海信息软件开发服务是什么
检查pg数据库的状态
互联网科技合同评审表
服务器升级用什么电脑
通信网络技术服务