【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
posted @ 2019-03-01 20:25  kingdelee  阅读(349)  评论(2编辑  收藏  举报