开发者社区> 问答> 正文

Mysql如何实现分类之后每个类别limit出X个结果?

我有个问题:有如下的一个表,
|id |user_id | content|
|1 |1 |.......|
|2 |1 |.....|
有N多个user_id,用什么sql语句才可以做到:
每个user_id只显示(limit)10个content
想要类似这样的结果:
user_id content
1 ....
.....最多只显示10个,user_id=1的.....
1 ....
2 ....
.....最多只显示10个,user_id=2的.....
2 ....
这个情况就是每个类别(按照user_id)分类,
分类之后每个类别,至多取出10个,
这个SQL语句,应该怎么写 ?
问题的起源是这样的,OSC的设计就是,每个跟帖,都可以有N多评论,但是每个跟帖的评论只会至多显示X个。
我想知道这种情况的数据库表结构是怎么设计的:
每个类别,都只会limit出X个结果,这到底该怎么实现?SQL语句是怎样的?
谢谢!!!

展开
收起
落地花开啦 2016-02-12 17:00:36 3232 0
2 条回答
写回答
取消 提交回答
  • 公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.

    这个需要用到窗口查询,PostgreSQL中可以这样来使用,MySQL不支持:

    select * from (select *,row_number() over (partition by user_id) rn from tbl) t where t.rn<=10;

    建议你更换数据库。

    2019-07-17 18:41:32
    赞同 展开评论 打赏
  • 喜欢技术,喜欢努力的人

    24
    合并结果集,在优化

    2019-07-17 18:41:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像