gpt4 book ai didi

mysql - 如何检索每个 ID 的最新和第二个最新日期?

转载 作者:行者123 更新时间:2023-11-29 04:34:41 26 4
gpt4 key购买 nike

我的 SQL 数据库是这样的

ID DATE 
1 2017-01-01
1 2017-01-03
1 2017-01-05
2 2017-01-06
2 2017-01-07
2 2017-01-08
2 2017-01-11
3 2017-01-11

如何检索每个 ID 的最大(日期)和第二个最新日期,如下所示。

 ID MAXDATE     SECONDMAXDATE        
1 2017-01-05 2017-01-03
2 2017-01-11 2017-01-08
3 2017-01-11 2017-01-11 (or 'NONE')

PS:当只有1条记录时,SECONDMAXDATE既可以显示MAXDATE也可以显示STRING(例如NONE)

最佳答案

我认为最简单的方法是 group_concat()/substring_index() “hack”:

select id, max(date),
substring_index(substring_index(group_concat(date order by date desc), ',', 2), ',', -1) as second_date
from t
group by id;

注意:这会将第二个日期作为字符串而不是日期返回。如果愿意,您可以将其转换回日期。

此外,group_concat() 的默认最大长度为 1,024 字节。这对于大多数用途(大约一百个日期)来说已经足够了。如果每个 id 有更多日期,那么这种机制可能不是最好的机制。

关于mysql - 如何检索每个 ID 的最新和第二个最新日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46569470/

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