码迷,mamicode.com
首页 > 数据库 > 详细

【SQL】利用Row_Number() 实现分组查询

时间:2015-03-05 10:59:44      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:sql row_number()

技术分享有一表如左图,现在需要实现查询每个组(groupid)的前两条记录。如何实现?


第一种方式用union all 这个不解释。不过在高版本SQL Server中利用Row_Number()函数可以实现,语句如下:

SELECT * FROM (
            SELECT ROW_NUMBER() OVER(PARTITION BY groupid ORDER BY id) AS rowid,* FROM dbo.test) x WHERE rowid<3

原理:x表的内容就是根据groupid分组得到的结果,每个rowid索引在各个组中增加,例如 组1 rowid 为1  2  3,组2 rowid 非4 5 6也是从1 2 3开始的。所以,在查询结果如下:

技术分享

本文出自 “Pz的技术实训基地” 博客,请务必保留此出处http://panzi.blog.51cto.com/4738203/1617511

【SQL】利用Row_Number() 实现分组查询

标签:sql row_number()

原文地址:http://panzi.blog.51cto.com/4738203/1617511

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!