我在mysql中有一个数据库,我需要根据“GROUP BY”创建一个MAX(日期)列,但我想查看所有行。 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上使用“group by”只留下2行... 谢谢!
编辑:我知道我可以通过自己加入表并在连接表中计算MAX(StartDate)来实现,但表的代码真的很长 - 我想知道是否有更优雅的方法可以做所以...答案 0 :(得分:1)
您可以使用变量执行此操作,而无需将表连接两次:
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
答案 1 :(得分:0)
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`