SQL去重的三种方法汇总.docx
《SQL去重的三种方法汇总.docx》由会员分享,可在线阅读,更多相关《SQL去重的三种方法汇总.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SQL去重的三种方法汇总;:列出task_id的所有唯一值(去重后的记录)-selectdistincttask_id-fromTask;-任务总数selectcount(distincttask_id)task_numfromTask;distinct通常效率较低。它不适合用来展示去重后具体的值,一般与count配合用来计算条数。distinct使用中,放在select后边,对后面所有的字段的值统一进行去重。比如distinct后面有两个字段,那么1,1和1,2这两条记录不是重复值。推荐下自己做的SpringBoot的实战项目:列出task_id的所有唯一值(去重后的记录,null也是值)-
2、selecttask_id-fromTask-groupbytask_id;-任务总数selectcount(task_id)task_numfrom(selecttask_idfromTaskgroupbytask_id)tmp;推荐下自己做的SpringCloud的实战项目:over(partitionby<用于分组的字段名>orderby<用于组内排序的字段名>)其中partitionby部分可省略。-在支持窗口函数的sql中使用selectcount(casewhenrn=1thentask_idelsenullend)task_numfrom(selectta
3、sk_id,row_number()over(partitionbytask_idorderbystart_time)rnfromTask)tmp;此外,再借助一个表test来理理distinct和groupby在去重中的使用:-下方的分号;用来分隔行selectdistinctuser_idfromTest;-返回1;2selectdistinctuser_id,user_typefromTest;-返回1,1;1,2;2,1selectuser_idfromTestgroupbyuser_id;-返回1;2selectuser_id,user_typefromTestgroupbyuser_id,user_type;-返回1,1;1,2;2,1selectuser_id,user_typefromTestgroupbyuser_id;-Hive、Oracle等会报错,mysql可以这样写。-返回1,1或1,2;2,1(共两行)。只会对groupby后面的字段去重,就是说最后返回的记录数等于上一段sql的记录数,即2条-没有放在groupby后面但是在select中放了的字段,只会返回一条记录(好像通常是第一条,应该是没有规律的)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 方法 汇总
限制150内