2016-12-04 26 views
1

鉴于这种交易表MySQL的 - 如何按日期

ID Date Name Stat1 
1 1  a  1 
1 2  b  1 
1 3  c  1 
2 4  d  1 
2 5  e  1 

我想组由ID记录,并有列“名称”每个组ID显示最后选择组第一串by子句按日期显示的名称(日期中的高数字按时间顺序排列)。最终的结果是:

ID Date Name Stat1 
1 3  c 3 
2 5  e 2 

遗憾的是这样的代码:

Select ID,Date,Name,sum(Stat1) 
From myTable 
Group by ID 

会产生“随机”的名字,
如何强制选择第一个/最后一个记录名称(按日期)各组(ID )?

谢谢

回答

1

你可以用这样的查询来做到这一点。如果您想要设置组的第一行或最后一行,请将分钟数最小化为最大值:

SELECT result.id,result.mdate,mt.name,result.stat1 
FROM (
    Select ID,min(date) mdate,sum(Stat1) as stat1 
    From myTable 
    Group by ID) AS result 
    LEFT JOIN myTable mt 
    ON mt.id = result.id AND mt.date = result.mdate;