云服务器网:购买云服务器和VPS必上的网站!

MSSQL中实现分组取第一条记录的方法

MSSQL中实现分组取第一条记录的方法最近项目中遇到了一个问题:对MSSQL数据库中的某张表进行按分组条件查询,取出每组结果中的第一条记录,除使用FOR,WHILE、Cursors游标处理之外,还有甚么更优的方法?
在MSSQL中实现分组取第一条记录的方法是通

MSSQL中实现分组取第一条记录的方法

最近项目中遇到了一个问题:对MSSQL数据库中的某张表进行按分组条件查询,取出每组结果中的第一条记录,除使用FOR,WHILE、Cursors游标处理之外,还有甚么更优的方法?

在MSSQL中实现分组取第一条记录的方法是通过ROW_NUMBER()函数,使用ROW_NUMBER() 函数,可以实现按分组条件查询,取出每组结果中的第一条记录的功能:

SELECT *

FROM

(

SELECT *, ROW_NUMBER() OVER( PARTITION BY FlagOrder BY Id) AS GroupFlag

FROM MyTable

) A

where A.GroupFlag = 1

其中,MyTable表是上表表名,

FlagOrder表示分组条件。

ROW_NUMBER()函数流程:

(1)先把表根据分组条件FlagOrder进行分组,每组以主键Id进行排序

(2)用ROW_NUMBER()函数计算每组排序后的条目,每组以1起始,顺次递增

(3)根据GroupFlag=1条件过滤出每组中的第一条记录

本方法可以比FOR,WHILE、Cursors游标处理更快,更安全,不会产生死锁等问题。特别支持MSSQL2008及以上版本,可以显著提升效力。

本文来源:https://www.yuntue.com/post/101708.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注