一个mysql的分组排序的问题

MySql help-doc 10年前 (2014-04-27) 929次浏览 0个评论

test表
id  tid
1   10
2   10
3   20
4   30
5   10
6   20
我想以tid分组然后以id从大到小排序 结果为
id  tid
6   20
5   10
4   30
请问sql语句要如何写?谢谢

40分
select max(id)  id , tid from table group by tid order by id
— 用DESC倒序
SELECT  *
FROM    TAB AS a
WHERE   NOT EXISTS ( SELECT 1
                     FROM   TAB
                     WHERE  tid = a.tid
                            AND id > a.id )
ORDER BY id DESC
select max(id) ,tid from test GROUP BY tid order by max(id) DESC ;
引用 2 楼 roy_88 的回复:

— 用DESC倒序
SELECT  *
FROM    TAB AS a
WHERE   NOT EXISTS ( SELECT 1
                     FROM   TAB
                     WHERE  tid = a.tid
                            AND id > a.id )
ORDER BY id DESC

版主 你写的和其它网友写的 哪个效率高些呢?

引用 4 楼 u013930225 的回复:
Quote: 引用 2 楼 roy_88 的回复:

— 用DESC倒序
SELECT  *
FROM    TAB AS a
WHERE   NOT EXISTS ( SELECT 1
                     FROM   TAB
                     WHERE  tid = a.tid
                            AND id > a.id )
ORDER BY id DESC

版主 你写的和其它网友写的 哪个效率高些呢?

具体看执行计划,如以楼主的例子只显示两列,用1#直接group by就行了,如实际是有多列显示条件不变时用where
 


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一个mysql的分组排序的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!