SQL分组获取记录的第一条数据——PARTITION BY
在查询数据时如果有重复,我们都知道可以用distinct去重,但使用distinct只能去除所有查询列都相同的记录,如果有一个字段不同,distinct是无法去重的,但我们还想要实现这样的效果,这时我们可以用partition by。
1.使用ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)先进行分组。(根据COLUMN1分组,在分组内部根据COLUMN2排序,结果就表示每组内部排序后的顺序编号,这个编辑在组内是连续且唯一的)
查询语句如下:
select a.CompanyID,a.UserName,a.AddTime,a.JF,
ROW_NUMBER() over(partition by a.CompanyID order by b.ID) as new_index FROM dbo.LB_Company a
left join dbo.LB_Certificate b on a.CompanyID = b.CompanyID where a.CompanyID in (361,414,447)
查询结果如下:
2.将上述结果作为一个表,外嵌查询select,使用条件new_index=1就可以查询出第个分组的第一条数据,从而达到去重的目的。
sql语句如下:
select * from(select a.CompanyID,a.UserName,a.AddTime,a.JF,
ROW_NUMBER() over(partition by a.CompanyID order by b.ID) as new_index FROM dbo.LB_Company a
left join dbo.LB_Certificate b on a.CompanyID = b.CompanyID where a.CompanyID in (361,414,447)
) t where t.new_index=1
查询结果如下:
SQL分组获取记录的第一条数据——PARTITION BY相关推荐
- paly 获取数据库的第一条数据
Cache last5_data = Cache .find("nodeIp=? order by id desc",node_ip).first()
- mysql分组取出每组地一条数据_MYSQL实现分组排序并取组内第一条数据
一.需要实现分组排序并且取组内状态优先级最高的数据 有一张这样的数据表, 需求是根据error_type分组然后取status最小的第一条数据 第一种写法: select t.* from ( sel ...
- oracle 取分组第一行,oracle分组后取每组第一条数据
oracle 分组后取每组第一条数据 '数据格式 分组取第一条的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER ...
- 【编程技巧】Stream流之list转map、分组取每组第一条
编程技巧-Stream流之list转map.分组取每组第一条 目录 编程技巧-Stream流之list转map.分组取每组第一条 前言 一.list转map 二.分组取每组第一条数据 总结 前言 JD ...
- Lambda表达式 Linq SQL Server 分组后获取第一条数据或最小(最大)数据
1.Lambda表达式 以下是从网上粘贴下来 经测试失败 提示方法"First"只能用作最终查询操作.请考虑在这个实例中使用方法"FirstOrDefault" ...
- oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录
oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...
- oracle 取1条记录,oracle 获取第一条数据
关于取第一条数据的sql特此作了一个例子如下: http://www.360doc.com/showweb/0/0/860281883.aspxSELECT * FROM tableName wher ...
- mysql每组随机一条_MySql分组后随机获取每组一条数据的操作
思路:先随机排序然后再分组就好了. 1.创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAUL ...
- mysql 随机分组_MySql分组后随机获取每组一条数据的操作
MySql分组后随机获取每组一条数据的操作,数据,效率,时间,李四,条数 MySql分组后随机获取每组一条数据的操作 易采站长站,站长之家为您整理了MySql分组后随机获取每组一条数据的操作的相关内容 ...
最新文章
- leetcode算法题--最长回文子串
- 图像处理(五)双指数磨皮
- 关于大型asp.net 应用系统的架构 —— 如何做到高性能高可伸缩性[转]
- log4j slf4j实现_slf4j 与log4j logback的区别以及使用场景
- ug11 linux,UG11.0升级包MP02Win#Linux系统下载就上UG网
- 计算机网络是将地理知识,计算机网络的基础知识精选.ppt
- 阿里发布2020农产品电商报告数字农业将成风口
- python中iloc的详细用法_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)...
- 美国IARPA发起人脸识别算法融合大奖赛
- 1008.protobuf语句内存对齐的错误
- 算法: 1和0子集合的个数 474. Ones and Zeroes
- mathematica7.0 汉下载及汉化
- 国电集团:电子招投标每年节约成本10亿元
- 百度、google、高德 地图比例尺功能实现(算法地图分辨率和zoomlevel之间的关系)
- 贴吧云签到php源码,Tieba-Cloud-Sign: 百度贴吧云签到,在服务器上配置好就无需进行任何操作便可以实现贴吧的全自动签到。配合插件使用还可实现云灌水、点赞、封禁、删帖、审查等功能...
- oracle 同义词转换错误,一次对dual表的恢复操作(ORA-00980:同义词转换不再有效错误解决方法) (转载)...
- tiup telemetry
- Java 8 新特性——实践篇
- WWDC之优化App启动速度
- springboot仓储系统出入库模块设计系统java ssm