テーブルから N 番目の行を取得する方法を尋ねられました。ただし、追加の要件では、行の削除/挿入後でも、同じ行を返し続ける必要があります。
その方法があるのではないかと疑っていました。
でも、何か思いついたら教えてください。ありがとうございます。
テーブルの「n番目」の行などはありません。SQL テーブルは順序付けられていないセットを表します。列で順序が指定されていない限り、特定の順序はありません。自動インクリメント列 (「シーケンス」または「ID」とも呼ばれます) またはデフォルトの作成日を持つ列がある場合は、それを使用できます。次のように:
select t.*
from (select t.*, row_number() over (order by id) as seqnum
from table t
) t
where t = @NTH;
これは「rowid」とタグ付けされていますが、データベースではありません。Oracle と SQLite (およびおそらく他のデータベース) で rowid を使用できます。ただし、これは必ずしも特定の順序を保証するものではありません。