MySQL获取列的最后一个值而不是第一个

时间:2014-01-09 18:50:43

标签: mysql greatest-n-per-group

这应该很简单:)

这就是我所拥有的:

SELECT rid, sid, sdata, max(id), min(FROM_UNIXTIME(epoch)) as fe, max(FROM_UNIXTIME(epoch)) as le, count(id) AS cnt
    FROM HID130
GROUP BY rid, sid
ORDER BY rid, sid DESC;

**OUTPUT:**
RID SID SDATA   MAX(ID) FE          LE          CNT
2   0   0   91152   2014-01-09 08:48:00 2014-01-09 08:48:00 1
2   2   4.52    100856  2013-12-18 02:40:00 2014-01-09 18:30:00 2814
2   1   13.5    100664  2013-12-18 02:39:00 2014-01-09 18:30:00 2514

一切看起来都很好,只有一个例外是sdata。

我想检索给定RID / SID组合的最后一个sdata值。目前我获得了RID / SID组合的第一个sdata值。

获取rid / sid组合的最后一个sdata条目的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

对于此类查询,我认为最简单的方法是使用substring_index() / group_concat()技巧:

SELECT rid, sid,
       substring_index(group_concat(sdata order by id desc), ',', 1),
       max(id), min(FROM_UNIXTIME(epoch)) as fe, max(FROM_UNIXTIME(epoch)) as le,
       count(id) AS cnt
FROM HID130
GROUP BY rid, sid
ORDER BY rid, sid DESC;