我在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 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
关于mysql - 显示分组依据的最大列 - 显示所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392298/