0

我有一个具有以下架构的表:

CREATE TABLE table (
  msg_id TEXT,
  thread_id TEXT,
  .
  .
  .
  date INTEGER 
)

我需要检索最近的n msg_id每个唯一值thread_id。有没有办法使用单个查询来做到这一点,或者我需要查询数据库以获得最新的不同thread_ids,然后再次查询数据库 PER 唯一thread_id?我记得在某处读过多个数据库查询可能会变得昂贵。

4

1 回答 1

1

您可以使用相关子查询。例如,对于N = 5

select  *
from    YourTable yt1
where   5 <
        (
        select  count(*)
        from    YourTable yt2
        where   yt2.thread_id = yt1.thread_id
                and yt2.msg_id < yt1.thread_id
        )

这不是太快,因此您可能最好使用多个查询。

于 2012-06-08T14:07:05.330 回答