我有一个包含以下架构的表:
CREATE TABLE table (
msg_id TEXT,
thread_id TEXT,
.
.
.
date INTEGER
)
我需要检索msg_id
每个唯一值的最新 n thread_id
。有没有办法使用单个查询来执行此操作,还是需要查询数据库以获取最新的不同thread_ids
,然后再次查询数据库PER unique thread_id
?我记得在某个地方读过多个数据库查询会变得很昂贵。
答案 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
)
这不是太快,所以你可能会更好地处理多个查询。