取り出す・絞り込む

INPUT · スライド

上から何件かだけ

01 / 06

全部はいらない

「いちばん売れたのはどれ?」を知りたいのに、6行ぜんぶ返ってきたら読むのがたいへん。データが1万件あったらなおさらだよね。

返す件数を決めるのが LIMIT だよ。

02 / 06

LIMIT の形

クエリのいちばんうしろに LIMIT 数 と書くと、その件数だけ返ってくる。

どの行が来るかは並び順しだい。並びを決めていなければ、テーブルに入れたままの順で先頭から返るよ。

SELECT name, price FROM booths  LIMIT 3;

実行結果

わたあめ | 150
たこやき | 400
ジュース | 120

03 / 06

ORDER BY と組み合わせる

LIMIT の本当の出番は ORDER BY と一緒のとき。並べてから上から数件取れば「上位◯件」になるよ。

書く順番は WHERE → ORDER BY → LIMIT。いつも LIMIT が最後だよ。

SELECT name, sold FROM booths  ORDER BY sold DESC  LIMIT 3;

実行結果

ジュース | 140
かきごおり | 118
やきそば | 97

04 / 06

1件だけ取り出す

LIMIT 1 なら「いちばん〜なもの」が1行で返る。最高記録や最安値を知りたいときの定番だよ。

件数より大きい数を書いてもエラーにはならない。あるぶんだけ返ってくるよ。ここから書いてみよう。

SELECT name, price FROM booths  ORDER BY price DESC  LIMIT 1;

実行結果

たこやき | 400

05 / 06

下位を見たいときは並びをひっくり返す

「上位◯件」の逆、「下位◯件」を見たいときは LIMIT をいじるのではなく、ORDER BY の向きを変える。DESC(大きい順)を ASC(小さい順)にすれば、いちばん小さいものが先頭に来るよ。

LIMIT はいつも「先頭から何件」を意味する。取り出す方向を決めているのは、あくまで ORDER BY の側だと覚えておこう。

SELECT name, price FROM booths  ORDER BY price ASC  LIMIT 1;

実行結果

ジュース | 120

06 / 06

OFFSET で先頭を飛ばす

LIMIT の後ろに OFFSET 数 を足すと、先頭から指定した件数を読み飛ばしてから数える。「1位〜3位は見た。次の3件(4位〜6位)が見たい」というときに使うよ。

この仕組みは、一覧を「1ページ目・2ページ目」と分けて表示するページングの土台にもなっている。

SELECT name, sold FROM booths  ORDER BY sold DESC  LIMIT 3 OFFSET 3;

実行結果

わたあめ | 82
たこやき | 65
クレープ | 54