テーブルから 2 番目に大きいエントリまたは 3 番目に大きいエントリを取得する方法を参照しましたが、最大値を調べることによってのみ返されます。
しかし、ここでは別のフィールドの最大値を使用するSQLクエリが必要です(ここではシーケンスであるid)。
ここにテーブル my_test があります
sent_byの 2 番目に大きい一意の値、つまりIDから100を取得する必要があります
私のクエリは良くないようです、私は試しました
SELECT sent_by
FROM MY_TEST
WHERE id =
(SELECT MAX(id)
FROM MY_TEST
WHERE id NOT IN
(SELECT id
FROM MY_TEST
WHERE sent_by =(SELECT sent_by FROM my_test WHERE id =(SELECT MAX(id) FROM MY_TEST))
)
); -- results 100
必要なものを取得する他の簡単な方法はありますか?3番目を取得する必要がある場合はどうですか?
編集
ここで、より明確にするために質問を更新します。
与えられたテーブルがメッセージ トランザクションの詳細であると仮定します。id を一意にして (シーケンス)、sent_by に個人/個人の ID (user_id など) を挿入します。sent_by 列は、同じ user_id を持つ複数の行で挿入される場合と挿入されない場合があります。
最新の sent_by 値を取得する必要がある場合: クエリを実行できます
select sent_by from my_test where id= (select max(id) from my_test);-- to get 60
私の質問は、2 番目に新しい sent_by 値を取得することです: (指定されたテーブルで、
the 2nd latest sent_by value should be 100, as id 8, 9, 10 are same sent_by values
the 3rd latest sent_by value should be 4,
the 4th latest sent_by value should be 3
)
質問が今明確であることを願っています。
前もって感謝します:)