登录
首页 >  数据库 >  MySQL

sql查询最近发表的记录,按照用户分组分页

来源:SegmentFault

时间:2023-02-21 20:34:14 223浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《sql查询最近发表的记录,按照用户分组分页》,聊聊MySQL,我们一起来看看吧!

一、问题场景

对于一个论坛来说,现在有一个主题表,包括用户authorid、发表时间dateline等字段。
现在想要查询一些指定用户每个用户最近发表的两条记录,然后分页展示,这样该如何写sql语句呢?

二、sql语句截图

图片描述

三、sql:

SELECT  A.*
FROM (
SELECT a.authorid, a.tid,a.subject,a.dateline,(SELECT COUNT(*)+1 FROM pre_forum_thread b 
             where b.authorid=a.authorid and b.dateline>a.dateline 
              ) as group_id

FROM pre_forum_thread a
where  a.authorid in (10,12,14,1095,1326,1626)
) A
WHERE A.group_id

四、sql语句解析:

  1. 先查询出这些用户所有的记录,生成一个临时表 a
  2. 然后子查询中的group_id是如何生成的呢?

       (1)a表与b表联合查询,其实是自己与自己联合b.authorid=a.authorid,然后a表数据每条记录与b表所有记录进行比较dateline,查出a表每条明细之后发表了多少个,记为group_id。
       (2)最新时间之后发表的记录个数group_id是0,倒数第二个时间之后发表的记录个数group_id是1,依次类推。。。
       (3)发现,如果想要查询到最新发表的两条记录,那么只要group_id
  3. 以上两步查出了这些特定用户每个用户最新发表的两条记录,然后记为A,通过limit进行分页查询即可。

五、查询结果展示

图片描述

今天关于《sql查询最近发表的记录,按照用户分组分页》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表