threeperson
发布于 2019-06-10 / 1 阅读
0
0

mysql 分组取前N名

##表结构

```

CREATE TABLE tbl_agent_three_copy (

id bigint(20) DEFAULT NULL,

uid bigint(20) DEFAULT NULL,

article_id bigint(20) DEFAULT NULL,

count int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

```

## 查询每个用户分享数最多的前3篇文章

```

SELECT * FROM

(

SELECT a.uid,a.article_id,a.count,IF(@uid=a.uid,@rank:=@rank+1,@rank:=1) AS rank

,@uid:=a.uid

FROM

(SELECT @uid := 0 ,@rank:=0) b,

(

SELECT uid,article_id,`count` FROM tbl_agent_three_copy ORDER BY uid DESC ,`count` DESC

) a

) b WHERE b.rank <=3;

```


评论