在查询数据时如果有重复,我们都知道可以用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相关推荐

  1. paly 获取数据库的第一条数据

    Cache last5_data = Cache .find("nodeIp=? order by id desc",node_ip).first()

  2. mysql分组取出每组地一条数据_MYSQL实现分组排序并取组内第一条数据

    一.需要实现分组排序并且取组内状态优先级最高的数据 有一张这样的数据表, 需求是根据error_type分组然后取status最小的第一条数据 第一种写法: select t.* from ( sel ...

  3. oracle 取分组第一行,oracle分组后取每组第一条数据

    oracle 分组后取每组第一条数据 '数据格式 分组取第一条的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER ...

  4. 【编程技巧】Stream流之list转map、分组取每组第一条

    编程技巧-Stream流之list转map.分组取每组第一条 目录 编程技巧-Stream流之list转map.分组取每组第一条 前言 一.list转map 二.分组取每组第一条数据 总结 前言 JD ...

  5. Lambda表达式 Linq SQL Server 分组后获取第一条数据或最小(最大)数据

    1.Lambda表达式 以下是从网上粘贴下来  经测试失败 提示方法"First"只能用作最终查询操作.请考虑在这个实例中使用方法"FirstOrDefault" ...

  6. oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...

  7. oracle 取1条记录,oracle 获取第一条数据

    关于取第一条数据的sql特此作了一个例子如下: http://www.360doc.com/showweb/0/0/860281883.aspxSELECT * FROM tableName wher ...

  8. mysql每组随机一条_MySql分组后随机获取每组一条数据的操作

    思路:先随机排序然后再分组就好了. 1.创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAUL ...

  9. mysql 随机分组_MySql分组后随机获取每组一条数据的操作

    MySql分组后随机获取每组一条数据的操作,数据,效率,时间,李四,条数 MySql分组后随机获取每组一条数据的操作 易采站长站,站长之家为您整理了MySql分组后随机获取每组一条数据的操作的相关内容 ...

最新文章

  1. leetcode算法题--最长回文子串
  2. 图像处理(五)双指数磨皮
  3. 关于大型asp.net 应用系统的架构 —— 如何做到高性能高可伸缩性[转]
  4. log4j slf4j实现_slf4j 与log4j logback的区别以及使用场景
  5. ug11 linux,UG11.0升级包MP02Win#Linux系统下载就上UG网
  6. 计算机网络是将地理知识,计算机网络的基础知识精选.ppt
  7. 阿里发布2020农产品电商报告数字农业将成风口
  8. python中iloc的详细用法_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)...
  9. 美国IARPA发起人脸识别算法融合大奖赛
  10. 1008.protobuf语句内存对齐的错误
  11. 算法: 1和0子集合的个数 474. Ones and Zeroes
  12. mathematica7.0 汉下载及汉化
  13. 国电集团:电子招投标每年节约成本10亿元
  14. 百度、google、高德 地图比例尺功能实现(算法地图分辨率和zoomlevel之间的关系)
  15. 贴吧云签到php源码,Tieba-Cloud-Sign: 百度贴吧云签到,在服务器上配置好就无需进行任何操作便可以实现贴吧的全自动签到。配合插件使用还可实现云灌水、点赞、封禁、删帖、审查等功能...
  16. oracle 同义词转换错误,一次对dual表的恢复操作(ORA-00980:同义词转换不再有效错误解决方法) (转载)...
  17. tiup telemetry
  18. Java 8 新特性——实践篇
  19. WWDC之优化App启动速度
  20. springboot仓储系统出入库模块设计系统java ssm

热门文章

  1. arduino点阵声音频谱_创客实战 | 制作一个随音乐跳动的32分频音频频谱显示器
  2. 使用T卡无线升级的方法
  3. 5.23FMEA方法,排除架构可用性隐患的利器
  4. P1074 靶形数独题解
  5. Web前端攻击方式及防御措施
  6. Python代码自动排版工具(PEP8风格),autopep8
  7. 一个完美的导航条html,一个DIV CSS代码布局的简单导航条
  8. 谈谈现阶段4K超高清视频节目制作系统的设计思路(3-1)
  9. 缓存穿透,击穿,雪崩
  10. 可能存在安全威胁的端口