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

MySQL:基于列值限制接收到的结果数 合并查询

皮献
2023-03-14
问题内容

我已经对此问题进行了研究,但是找不到解决方案。

我有以下查询,为我提供了“ some_id”的列表:

SELECT some_id FROM example GROUP BY some_id

我有以下查询,该查询将为“ some_id”等于数字的行获取5个最新条目的列表。

SELECT * FROM example
WHERE some_id = 1
ORDER BY last_modified DESC
LIMIT 5

如何仅使用一个查询从表“ example”中获取每个“ some_id”的前5个最新条目?如果“
some_id”的条目少于5个,则可以将它们包括在内,这样会使事情变得不那么复杂。

非常感谢!


问题答案:

)

我已经对其进行了修改以满足我的特定需求:

SELECT * FROM
(
    SELECT *, @num := if(@some_id = some_id, @num := @num + 1, 1) as row_num,
           @some_id := some_id as some_id
    FROM example
    ORDER BY last_modified DESC
) as e
WHERE row_num <= 5


 类似资料:
  • 主要内容:指定初始位置,不指定初始位置,LIMIT和OFFSET组合使用当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用  LIMIT 关键字来限制查询结果返回的条数。 LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。 LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。 指定初始位置 LIMI

  • 问题内容: 我有一个带有用于发布的表的数据库,每个表可以有多个作者,这些作者存储在不同的表中。我想查询数据库,以便在第一列中提供出版物标题列表,在第二列中提供该出版物的合并作者。 当然,这使我多次获得了许多作者的出版物标题。 按ID分组后,每个标题给我一个作者: 我正在寻找的结果是这样的: 我认为应该在使用GROUP_CONCAT中找到答案,但是我唯一能得到的结果是所有作者的一个结果行: 在联接之

  • 问题内容: 我非常确定我们不能将LIMIT子句用于我想做的事情-因此想确定是否还有其他方法可以实现此目的。 我有一个表,其中捕获了哪个用户访问了哪个商店。每次用户访问商店时,都会在此表中插入一行。 一些领域是 shopping_id(primary key) store_id user_id 现在,我想要的是-对于给定的一组商店,找到访问该商店的最大次数的前5位用户。 我可以一次在1个商店中进行以

  • 获取此代码时出错,如何获取结果employee type-wise串联用户名 预期结果集

  • 问题内容: 这个问题已经在这里有了答案 : 十年前关闭。 可能重复: (My)Sql数据库中的简单随机样本 你好! 假设我有一个用户表。我想要一个可以改组结果并仅显示5个用户的查询。我如何在不使用任何PHP的MySQL查询中做到这一点? 问题答案: 可以使用,但是性能很差 我建议将所有用户ID的列表存储到序列化数组中,并缓存到磁盘文件中。(定期更新) 因此,您可以使用PHP取消对它的序列化,并使用

  • 我有一个简单的问题: 这将返回如下结果: 但是现在我需要一种计算特定值的方法,这样我就可以返回不同事件类型中存在的许多结果 根据上面的结果,我想返回 有4个结果的event_type值为1等。