[英]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.