gpt4 book ai didi

mysql - SQL获取每个组的第二(第n)条记录(postgresql或mysql)

转载 作者:可可西里 更新时间:2023-11-01 07:20:01 25 4
gpt4 key购买 nike

我用谷歌搜索和 stackoverflow 高低搜索,无法找到任何具体的解决方案来显示每个组的第二(第 n)条记录。

考虑下表(按 created_at desc 排序):

----------------------------------------------
bid_id | status | created_at
----------------------------------------------
1 | cancelled | 2015-10-03
1 | awarded | 2015-10-02
1 | pending | 2015-10-01
2 | pending | 2015-10-01
3 | denied | 2015-10-02
3 | pending | 2015-10-01

结果输出应如下所示(按 bid_id 分组):

bid_id | status    | created_at
----------------------------------------------
1 | awarded | 2014-10-02
3 | pending | 2014-10-01

实现此目的的高效 SQL 是什么?非常感谢任何提示!

最佳答案

您可以使用 row_number 为按 created_at 列排序的每个 bi_id 分区分配行号。然后您可以简单地选择第二行或您需要的任何一行。这适用于 postgres,因为它支持 window 函数。

select bid_id, status, created_at
from
(
select bid_id, status, created_at,
row_number() over(partition by bid_id order by created_at desc) as rn
from tablename
) x
where x.rn = 2;

关于mysql - SQL获取每个组的第二(第n)条记录(postgresql或mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32402423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com