0

次のスキーマを持つテーブルがあります。

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

の一意の値ごとに最新のn を取得する必要があります。単一のクエリを使用してそれを行う方法はありますか、またはデータベースにクエリを実行して最新の個別のものを取得し、データベースに再度クエリを実行する必要がありますか? 複数のデータベースクエリが高価になる可能性があることをどこかで読んだことを思い出します。msg_idthread_idthread_idsthread_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 に答える