首页 > 数据库技术 > 详细

SqlServer中 Partition By 的使用( 对多行数据分组后排序取每个产品的第一行数据)

时间:2020-09-27 12:47:11      阅读:37      评论:0      收藏:0      [点我收藏+]

1:数据库表结构:

(产品图片表)

select * from product_imgs

技术分享图片

 

2:应用场景

可见表中每一个产品(pro_id)可能对应多个图片(img),我想要按照添加时间的先后顺序,获得其中每一个产品的第一张图片

3:尝试使用 group by 

select top 1 pro_id,img,create_time from product_imgs group by pro_id,img,create_time order by create_time 

技术分享图片

发现无法满足每一个产品的图片

4:使用Partition by 

  1.  select * from (select pro_id,img,create_time, ROW_NUMBER() over(partition by pro_id order by create_time) as row_sort from product_imgs ) 
  2. as t where t.row_sort=1

技术分享图片

 

可以满足需求,所以Partition by可以理解为 对多行数据分组后排序取每个产品的第一行数据

 

SqlServer中 Partition By 的使用( 对多行数据分组后排序取每个产品的第一行数据)

原文:https://www.cnblogs.com/zxdz/p/13738405.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!