mysql group by并对每个组进行排序

lac*_*kar 14 mysql sql sorting group-by

我有下表:

ID NAME TIME
1  A    0
2  A    3
3  B    1

我使用下面的查询产生:

SELECT * FROM `table` GROUP BY `NAME`
Run Code Online (Sandbox Code Playgroud)
ID NAME TIME
1  A    0
3  B    1

我想用它GROUP BY来生成这样的结果(按TIME列折扣排序):

ID NAME TIME
2  A    3
3  B    1

小智 19

SELECT NAME, MAX(TIME) as TIME 
FROM table 
GROUP BY time 
ORDER BY time DESC
Run Code Online (Sandbox Code Playgroud)

  • 无法保证"NAME"列与"MAX(TIME)"位于同一行.鉴于上述数据或小数据集,它可能很有效,但绝不可靠.有关详细讨论,请参阅http://stackoverflow.com/questions/14770671/mysql-order-by-before-group-by?noredirect=1#comment63515985_14770671 (8认同)

小智 6

 select * from (select * from table order by TIME DESC) t group by NAME
Run Code Online (Sandbox Code Playgroud)


小智 5

从这里尝试这个解决方案http://www.cafewebmaster.com/mysql-order-sort-group,它也能够解决我的问题:)

样本:

SELECT * FROM 

(
select * from `my_table` order by timestamp desc
) as my_table_tmp

group by catid

order by nid desc
Run Code Online (Sandbox Code Playgroud)