Mysql:获得每个组的第二个最早日期

时间:2015-06-11 04:19:13

标签: mysql sql mysql-workbench

期望的结果: 我想获得每组最早的第二个日期。

当前: 我得到每个小组的最早日期

查询

select * from
(select * from profile_match
where match_available_on is not null
order by profile_id asc, match_available_on asc)
as P1
group by P1.profile_id

示例:Link

从示例中,我想得到:

  • 1,' 2015-05-20 03:50:11'
  • 2,' 2015-05-16 03:50:09'

我希望查询不会使用特定的profile_id(1或2)进行硬编码,因为我的实际数据有很多profile_id。谢谢你们!

1 个答案:

答案 0 :(得分:1)

此查询将为您提供所需的结果:

select t.profile_id, min(t.match_available_on )
  from profile_match t
    inner join (
      select profile_id, min(match_available_on) match_available_on
        from profile_match
        group by profile_id
    ) q
    on t.profile_id = q.profile_id
      and t.match_available_on > q.match_available_on
  group by t.profile_id;

通过查找分钟match_available_on,我们可以对其进行范围连接,并选择最小连接值。这不会有惊人的表现,但它会完成工作。

updated your demo here

对于只有一个可用日期的个人资料,它不会返回一行,因为没有“第二早期”。