首页 > 数据库 >Sql去重查询数据,存在部分字段相同 max(id)  和 group by配合使用

Sql去重查询数据,存在部分字段相同 max(id)  和 group by配合使用

时间:2023-08-07 18:56:09浏览次数:47  
标签:group max Sql table where id select

Sql去重查询数据
原文链接:https://blog.51cto.com/u_15910936/5932613


最近在工作过程中,面试过程中, 部分求职者或者同事,对sql怎么去重查询,不是太熟练

今天下午忙里偷闲, 整理了一下 

其实sql基本的查询 ,还是蛮有意思,   下面是我大致整理的几种去重查询 

1.存在2条一样的数据,  使用distinct

eg:   select distinct * from table(表名) where  条件

 

2.存在部分字段相同(有key, id  即唯一键) 如:id列不同,id类型为int,自增字段,使用聚合函数max或其他

eg:   select * from  table  where  id  in (

  select  max(id)  from  table  group by  [去重复字段表1,.....] having COUNT(*)>1

  )

 3.没有唯一键 ID,  需要借助创建临时表,来解决

 eg:  select  indentity (int,1,1) as  id , * into newtable(临时表)  from table

 select * from newtable where  id in  (select max(id)  from newtable group by [去重复字段表1,.....]) drop table newtable

4. id列不同,id类型为uniqueidentifier

① 使用row_number() over() he partition by  给每一组添加行号

select *,(row_number() Over(partition By'分组字段' order By '排序字段')) RowNum from

(select * from table where '分组字段'in (

select '分组字段' from table group by '分组字段' having count(*) >1)t1)

 

②将行号=1的数据插入临时表中

Select * into #A from (‘上面的sql语句’) t2 where t2.RowNum=1

 

注意:

1.row_number() over()是给行加行号的

2.partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组 


 

 

 

 

 

标签:group,max,Sql,table,where,id,select
From: https://www.cnblogs.com/sunny3158/p/17612437.html

相关文章

  • Android 系统 映像文件
    通过Android拉取ASOP项目源码,配好各种环境后,编译出来的文件,有如下几个:通过Android拉取ASOP项目源码,配好各种环境后,编译出来的文件,有如下几个:boot.img包含内核启动参数、内核等多个元素ramdisk.img小型的文件系统,是Android系统启动的关键system.imgAndroid系统......
  • SqlServer时间格式化
       sqlserver日期格式化中文-年月日selectconvert(varchar,datepart(yy,getdate()))+N'年'+convert(varchar,datepart(mm,getdate()))+N'月'+convert(varchar,datepart(dd,getdate()))+N'日',cast(datepart(yy,getdate())asvarchar)+N'年......
  • FindByNameAsync vs FindByIdAsync vs FindByEmailAsync vs FindByLoginAsync
    InASP.NETIdentity,UserManagerisacoreclassthatprovidesasetofAPIstomanageuseraccounts.Themethodsyoumentioned(FindByNameAsync,FindByIdAsync,FindByEmailAsync,andFindByLoginAsync)areusedtofindauserbasedondifferentcriteria.T......
  • 支持多数据源联合查询的SQL运行引擎sycnany-SQL添加使用自定义函数
    在微服务和云原生愈发流行的今天,数据的分布也愈发脱离单库单机而更加复杂,使用的数据库类型也会更多,但业务的复杂依然会带来了大量的数据查询和导出需求,而很多时候我们很难为数据量的大部分系统创建完整的BI数仓系统,这时候你是不是觉得为这些需求查询和导出数据就会是一个十分困难且......
  • 【金九银十面试冲刺】Android岗面试题每日分享——Java篇
    一、Java异常机制中,异常Exception与错误Error区别这道题想考察什么?在开发时需要时候需要自定义异常时,应该选择定义Excption还是Error?编写的代码触发Excption或者Error分别代表什么?考察的知识点Java异常机制考生应该如何回答在Java中存在一个Throwable可抛出类,Throwable有两个重要的......
  • MySQL和MongoDB如何JOIN查询?一个直接在本地运行的SQL执行引擎
    在微服务和云原生愈发流行的今天,数据的分布也愈发脱离单库单机而更加复杂,使用的数据库类型也会更多,但业务的复杂依然会带来了大量的数据查询和导出需求,而很多时候我们很难为数据量的大部分系统创建完整的BI数仓系统,这时候你是不是觉得为这些需求查询和导出数据就会是一个十分困难且......
  • PLSQL客户端刚安装好后无法访问服务器数据库的解决方法
    1、正常安装PLSQL2、安装客户端oracle客户端工具:InstantClientSetup64w-oracle简易客户端.exe3、配置环境变量,在path中添加上面安装客户端工具的地址。4、打开plsql,即可看到登录下面多了一个选项,即可以登录使用了。......
  • IDE committ规范及要求——多次提交的committ通过rebase合并---深入一点点-遇到merge
    1.强推-命令行操作//中止正在进行的Gitrebase操作的命令gitrebase--abort//将当前分支重命名为backupgitbranch-mmini_alarmmini_alarm_backup//用远端主分支拉gitcheckout-bmini_alarmupstream/master//gitk会打开一个图形界面窗口,显示当前目录下Git仓库......
  • idea2022.3.1 java文件显示J
     解决办法:1、File>projectstructure>Modules 把Java标成sources,相应资源文件标成resource。2、刷新一下maven,重启一下IDEA就可以了 ......
  • Airflow 2.2.6 + MySQL 8.0.27 + Redis 7.0.12 部署Airflow任务调度平台
    本docker-compose文件在centos7.9系统,docker版本为24.0.2上测试的如果你的docker版本低于24.xxx就需要手动安装docker-compose,高于24就不需要安装了,docker已经自带了官方文档,关于docker部署1.先执行mkdir-p./dags./logs./plugins./config./......