SQLステートメントからレコードのページ付けを作成しようとしていますが、すべての次と前を取得できましたが、SQLクエリが2行ではなく1行しか返さないため、最後のレコードは前のレコードを次として表示します。次を設定しています最初の結果と2番目の結果としての前の結果に基づきます。
データ:
- アップル
- バナナ
- 葡萄
- オレンジ
SQL:
select *
from (select top 1 fruit
FROM table
where fruit > 'Banana'
order by fruit asc) as x
UNION ALL
select *
from (select top 1 fruit
FROM table
where fruit < 'Banana' order by fruit desc) as y
結果:
fruit
--------
Grape
Apple
これはうまくいきます!
最初のレコードの場合-最初のレコードが真の次のレコードである場合に正しい結果が得られます。最後のレコードの場合-前のレコードを取得する2番目のクエリである1つの結果が得られます。ただし、最後のレコードを知る方法がないため、PreviousではなくNextとして出力されます。
それが最後のレコードであり、返される単一の行が実際には前のレコードであるとどのように判断しますか?
また
次のクエリに対してクエリがNULL行を返すようにするにはどうすればよいですか?だから私はNULLの結果に対してテストすることができますか?
ボーナスポイント!
循環ページネーションを有効にできるように、最初のレコード、最後のレコード、次と前のレコードを取得する1つのクエリを作成するにはどうすればよいですか?最初のレコードにある場合は、最後のレコードを前と同じように表示します。最後のレコードで次のレコードを最初のレコードとして表示する場合はどうなりますか?