mysql是没有oracle的这个分析函数,故只能自然根据原有语法写
先创建一个测试数据库,如图
要实现根据组别gid按num排序后重新获取列表
理论上就是自联表,把num比自己大的或者比自己小的作为临时表,代码如下
SELECT t.*,COUNT(*) AS rank
FROM test t LEFT JOIN test r
ON t.gid = r.gid AND t.num >= r.num
GROUP BY t.id
order by gid,rank
结果如图: