首页 > 数据库技术 > 详细

Mysql分组取每组前几位

时间:2019-10-30 12:02:46      阅读:78      评论:0      收藏:0      [点我收藏+]

SELECT 字段1,字段2,new_rank as rank from
(SELECT 字段1,字段2,
IF(@tmp=字段1,@rank:=@rank + 1,@rank:=1) as new_rank,
@tmp:=字段1 as tmp
FROM 表名
ORDER BY 字段1 DESC) b
where new_rank <= n;

 

逻辑说明:

根据分组字段排序

排序过程中将分组字段的值赋给变量@tmp(如果分组条件是多个字段,则@tmp也需要对应多个变量),然后通过if函数比对来排序

注意:@tmp:=字段1 as tmp 赋值操作需要放在右边,即if函数的右边,因为mysql语句编译有从右到左的特性。

 

Mysql分组取每组前几位

原文:https://www.cnblogs.com/blrorz/p/11763916.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!