【问题标题】:Query that looks up the latest N Number rows when given list of single columnID给定单个 columnID 列表时查找最新 N 行的查询
【发布时间】:2026-01-22 04:25:01
【问题描述】:

这是我的桌子的样子。

UUID        Varchar     Unique id 
CREATED_ON  TIMESTAMP   Instant
Encounter   Varchar     encounter

我需要一个查询来查找每次遇到的最新 N 行数。因此,如果有 3 次遭遇,则每一次遭遇最多可以有 N 行。

我尝试使用子查询,但它们不起作用。如果是一次遭遇,我能够检索最新的 n 行。但是每次遭遇的检索似乎都非常困难。有什么想法吗?

【问题讨论】:

  • 是 Oracle 还是 Mysql ?标签相当混乱。
  • 更新了我的标签。它是甲骨文。

标签: sql plsql oracle-sqldeveloper


【解决方案1】:

以下内容应该可以满足您的需求:

SELECT a.* FROM 
(
   SELECT UUID, CREATED_ON, Encounter, 
    ROW_NUMBER() OVER(PARTITION BY Encounter ORDER BY CREATED_ON DESC) AS rn
   FROM table1
) a
WHERE a.rn <= :your_number

【讨论】:

  • 谢谢。但是如果我想传递一个遭遇列表怎么办?比如遇到 IN(1,2,3) 的地方。
  • 只需将 WHERE 添加到内联视图 - ` ... FROM table1 WHERE Encounter IN (1,2,3) )a .... `
  • 谢谢 A1ex07。通过这个查询,我将得到“rn”作为 cloumnID。我正在尝试将返回的行转换为 JPA 实体。所以我不想要那个 rn 专栏。有没有办法起飞?
  • 而不是 a.* 明确指定列列表 - SELECT a.UUID, a.CREATED_ON, a.Encounter ...
  • 它将创建一个不是我的实体的表。我不确定 JPA 是否处理内部查询并返回匹配的实体。
最近更新 更多