zoukankan      html  css  js  c++  java
  • SqlServer中 Partition By 的使用( 对多行数据分组后排序取每个产品的第一行数据)

    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可以理解为 对多行数据分组后排序取每个产品的第一行数据

  • 相关阅读:
    Nginx配置文件
    SSM三层模型之间的参数传递
    Junit4用法
    常量类的设计
    初识Oracle
    sss
    sss
    sss
    sss
    sss
  • 原文地址:https://www.cnblogs.com/zxdz/p/13738405.html
Copyright © 2011-2022 走看看