当前位置: 首页 > 面试题库 >

如何一次选择获取每个类别的最新2个项目(使用mysql)

冀弘厚
2023-03-14
问题内容

我的数据如下所示:

id |类别|插入日期|标题...。
--------------------------------
1 | 1 | 123 |测试1
2 | 1 | 124 |测试2
3 | 1 | 125 |测试3
4 | 2 | 102 |测试4
5 | 2 | 103 |测试5
6 | 2 | 104 |测试6

我要完成的工作是按类别获取最新的2个条目(按insertdate DESC的顺序排列),因此结果应为:

id | ....
----
3 |...。
2 | ....
6 |...。
5 | ....

使用获取最新消息group by很容易,但是如何在不启动多个查询的情况下获取最新2?

感谢您的帮助;-)
S.


问题答案:

在这里,你哥们!

SET @counter = 0;
SET @category = '';

SELECT
    *
FROM
(
    SELECT
        @counter := IF(data.category = @category, @counter+1, 0) AS counter,
        @category := data.category,
        data.*
    FROM
    (
        SELECT
            *
        FROM test
        ORDER BY category, date DESC
    ) data
) data
HAVING counter < 2


 类似资料:
  • 问题内容: 我有一个项目数据库。每个项目都按类别表中的类别ID进行分类。我正在尝试创建一个列出每个类别的页面,并在每个类别下方显示该类别中的4个最新项目。 例如: 宠物用品 宠物食品 我知道我可以通过查询数据库来轻松解决此问题,如下所示: 然后遍历该数据并查询数据库中的每个类别以获取最新的项目: 我要弄清楚的是,我是否可以仅使用1个查询并获取所有这些数据。我有33个类别,因此我认为这可能有助于减少

  • 问题内容: 假设我有一个会议实体。每个会议都有一个与会者和一个会议日期。在我的会议表中,我可能会为每个与会者召开多个会议,每个会议的日期都不同。我需要一个JPA查询,该查询将仅为所有与会者选择最新的会议。例如,如果我的桌子看起来像这样 我的结果应该是 针对postgres使用JPA 2。会议有1-1个出席者和一个简单的时间戳记日期。我怀疑我需要和max(blah)做一个小组,也许还需要加入我自己的

  • 问题内容: 我有一个类似于 我想获取每个“ deviceId”的最新“数据”(使用message.ts作为时间戳)。 到目前为止,我已经设法使用查询按时间戳记的顺序取回了数据, 但是我不知道如何删除重复的设备记录。 这可以在CosmosDB SQL引擎内完成吗? 问题答案: 感谢Mark Brown的评论,我发现以下内容似乎是此问题的正确解决方案。不仅仅只是一次性使用一些SQL那样优雅,但这确实是

  • 问题内容: 我经营一个网站,用户可以在其中发布项目(例如图片)。这些项目存储在MySQL数据库中。 我想查询最后十个发布项目,但任何单个用户最多只能约束3个项目。 最好的方法是什么?我的首选解决方案是对SQL查询施加约束,以请求最后十项。但是非常欢迎有关如何设置数据库设计的想法。 提前致谢! BR 问题答案: 使用关联的子查询非常容易: 该查询假定以后添加了较大的均值 相关子查询是一个强大的工具!

  • 问题内容: 可以说我有2个表:blog_posts和类别。每个博客帖子仅属于一个类别,因此此处的两个表之间基本上有一个外键。 我想从每个类别中检索2个最新的帖子,是否可以在单个请求中实现?GROUP BY会将所有内容分组,而在每个类别中只剩下一行。但我要其中两个。 执行1 + N查询(N =类别数)会很容易。首先检索类别。然后从每个类别检索2个帖子。 我相信执行M个查询(M =我希望从每个类别获得

  • 问题内容: 我们是postgres的新手,我们有以下查询,通过该查询我们可以从每个类别中选择前N个记录。 以上查询的输出是这样的 但是我们的要求有所不同,我们想从每个类别中选择前n%个记录,其中n不固定,n基于每个组中某些元素的百分比。 问题答案: 要基于每个组中行数的百分比来检索行,可以使用两个窗口函数:一个对行进行计数,另一个对行赋予唯一编号。 SQLFiddle示例:http ://sqlf