您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

bubuko 2022/1/25 19:25:39 sqlserver 字数 2765 阅读 772 来源 http://www.bubuko.com/infolist-5-1.html

1:数据库表结构: (产品图片表) select * from product_imgs 2:应用场景: 可见表中每一个产品(pro_id)可能对应多个图片(img),我想要按照添加时间的先后顺序,获得其中每一个产品的第一张图片 3:尝试使用 group by select top 1 pro_id ...

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


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶