sql获取多条有相同属性数据中的第一条

sql获取多条有相同属性数据中的第一条

当我们遇到一条数据如
id    bbid    name    time
1    2        上厕所    9:30
2    2        上厕所   14:30
3    2        上厕所    8:30
4    1        洗手        9:40
我们想将数据获取成下面这样子
id   bbid    name   time
3    2       上厕所   8:30
3    1       洗手       9:40
就是合并相同bbid的数据,使之只展示该类中最早的一条
就需要用到ROW_NUMBER() OVER()函数,具体如下

					SELECT
                            * 
                        FROM
                            ( SELECT
                                sb.ID ,sb.name,sb.bbId,
                                ROW_NUMBER() OVER(PARTITION 
                            BY
                                ar.BB_ID 
                            ORDER BY
                                ar.time DESC) fsp 
                            from
                                表名 sb 
                            LEFT JOIN
                                表名 ar 
                                    ON ar.BB_ID = sb.ID 
                            order by
                                sb.ID desc ) atc 
                        WHERE
                            fsp = 1  
                           

用fsp=1来筛选每个类别的第一条数据
另外附上一个其他排名函数的一个链接,讲的蛮清楚的
[sql 四大排名函数—(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介]

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值