【MySQL】sort by then group by
tb:
### 需求:根据id进行分组,找到分组内hour中最大的一项
错误写法:
select id, max(hour) from tb group by id;
正确的写法:
### 需求:根据id进行分组,找到分组内hour中最大的一项
### 1.根据id进行分组,列出id与max(hour);此时,是组内的未知序的第一条,max仅检索hour列的最大值,与该行的其他属性无关
SELECT id, max(hour), name
FROM tb
GROUP BY id
### 2.通过id, max(hour)再次和tb进行自连接,可以仅保留上一个逻辑过滤分组剩下的,且通过on maxhour连接取得b表的hour项的数据
SELECT a.id, a.maxhour, b.name
FROM (
SELECT id, max(hour) AS maxhour, name
FROM tb
GROUP BY id) a
JOIN tb b ON a.id = b.id AND a.maxhour = b.hour