February 2022
Intermediate to advanced
560 pages
8h 5m
Japanese
この本は検索に関する本で、これまでの章でも検索を扱ってきています。結合、WHERE句、グループ化手法を使って必要な結果を検索して返す、さまざまな種類のクエリを紹介しました。しかし、検索操作の中には、他の検索とは一線を画し、検索について異なる考え方を示すものもあります。例えば、結果セットを1ページずつ表示するような場合です。その際の問題の半分は、表示するレコード全体を特定(検索)することです。残りの半分は、ユーザが画面上のレコードを行き来する際に、次に表示するページを繰り返し検索することです。最初はページネーションが検索の問題であるとは思わないかもしれませんが、検索の問題として捉え、検索の問題として解決できます。本章では、このような種類の検索を扱います。
結果セットをページネーション(スクロール)したい。例えば、EMPテーブルから1番目から5番目の給与を返し、次にその次の5つを返したい。目標は、一度に5つのレコードを表示し、「次」ボタンをクリックするたびに次にスクロールできるようにすることである。
SQLには最初、最後、次という概念がないので、対象の行に順番を付けなければいけません。順番を付けるだけで、特定の範囲のレコードを正確に返すことができます。
ウィンドウ関数ROW_NUMBER OVERを使って順番を付け、返したいレコードの範囲をWHERE句で指定します。例えば、1行目から5行目までを返すには次のようにします。
select salfrom (select row_number() over (order by sal) as rn,salfrom emp) xwhere ...
Read now
Unlock full access