首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询以获取每个主题的最多2条回复

查询以获取每个主题的最多2条回复
EN

Stack Overflow用户
提问于 2015-11-02 12:13:50
回答 1查看 25关注 0票数 0

我希望该表返回最多2个回复从每个主题使用右连接。我可以知道我该怎么做吗?

代码语言:javascript
复制
Topic table
+--------+
|  tid   |
+--------+
|  1     | 
|  2     |
|  3     |
|  4     |
+--------+


Reply table
+--------+--------+
|  rid   |  tid   |
+--------+--------+
|  1     |    1   |
|  2     |    1   |
|  3     |    1   |
|  4     |    2   |
|  5     |    2   |
|  6     |    2   |
|  7     |    4   |
|  8     |    4   |
|  9     |    4   |
+--------+--------+

Result
+--------+--------+
|  tid   |  rid   |
+--------+--------+
|  1     |    1   |
|  1     |    2   |
|  2     |    4   |
|  2     |    5   |
|  3     |  null  |
|  4     |    7   |
|  4     |    8   |
+--------+--------+
EN

回答 1

Stack Overflow用户

发布于 2015-11-02 13:02:54

下面这个Top-N查询如何:

代码语言:javascript
复制
select tid, rid from(
    select t.tid, r.rid,
           case when @tid is not null and @tid != t.tid then @rn := 0 else null end reset_rn,
           @tid := t.tid tid_change,
           @rn := @rn + 1 rn
    from   topic t
    left join reply r on t.tid = r.tid
    join (select @rn := 0, @tid := null) rn
    order by t.tid, r.rid
) q
where rn < 3;

保留哪两行的关键是内部查询中的order by

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33470661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档