繁体   English   中英

显示分组依据的MAX列-显示所有行

[英]show MAX column for group by - show all rows

我在mysql中有一个数据库,我需要根据“ GROUP BY”创建一个MAX(date)列,但是我想查看所有行。 PK是组,开始日期。 我想找到每个组的max(StartDate)-但仍然看到所有记录,例如:

group   |  StartDate  |  MAX(StartDate)
  1     |  2015-10-01 |   2015-10-20
  1     |  2015-10-10 |   2015-10-20
  1     |  2015-10-20 |   2015-10-20
  2     |  2015-09-24 |   2015-10-05
  2     |  2015-10-05 |   2015-10-05

我该怎么办? 在组上使用“ group by”仅使我只有两行...谢谢!

编辑:我知道我可以通过将表本身与联接表并在联接表中计算MAX(StartDate)来做到这一点,但是该表的代码确实很长-我想知道是否有一种更优雅的方法。 。

您可以使用变量来执行此操作,而无需两次连接表:

  select t.*,
         (@d := if(@g = `group`, @d,
                   if(@g := `group`, startdate, startdate)
                  )
         ) as maxdate
  from table t cross join
       (select @g := '', @d := '') params
  order by `group`, startdate desc
select t1.*, t2.m_date
from your_table t1
join
(
  select  `group`, max(startdate) as m_date
  from your_table
  group by `group`
) t2 on t1.`group` = t2.`group`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM