SQLite:返回列'y'的每个唯一值的最近'n'行

时间:2012-06-08 13:58:20

标签: android sql sqlite

我有一个包含以下架构的表:

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

我需要检索msg_id每个唯一值的最新 n thread_id。有没有办法使用单个查询来执行此操作,还是需要查询数据库以获取最新的不同thread_ids,然后再次查询数据库PER unique thread_id?我记得在某个地方读过多个数据库查询会变得很昂贵。

1 个答案:

答案 0 :(得分: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
        )

这不是太快,所以你可能会更好地处理多个查询。