Kodokon kodokon.com

並べ替えと重複排除:ORDER BY、LIMIT、DISTINCT

ORDER BYで結果を並べ替え、LIMITで行数を制限し、DISTINCTで重複を取り除くことをマスターしましょう。

6 分 · 3 問

このレッスンを Kodokon で開く

デフォルトでは、SELECTが返す行の順序は保証されません。データベースは都合のいいように返します。順序を課すには、列を続けたORDER BYを加えます。並べ替えはデフォルトで昇順です(ASCで明示できます)。降順にするにはDESCを加えます。

SQL
SELECT title, price FROM books ORDER BY price;

SELECT title, price FROM books ORDER BY price DESC;
最も安いものから最も高いものへ、そしてその逆

複数の列で並べ替えられます。ORDER BY genre, price DESCはまずジャンルで、次に同じジャンルの中で最も高いものから安いものへと並べ替えます。LIMIT句は結果の最初のN行だけを残します。ORDER BYと組み合わせれば「トップN」が得られます。LIMIT 3 OFFSET 2ならさらに最初の2行を飛ばします。

SQL
SELECT title, price FROM books
ORDER BY price DESC
LIMIT 3;
最も高い本のトップ3

最後のツール、DISTINCTSELECTのすぐあとに置かれ、結果から重複を取り除きます。私たちのテーブルには7冊の本がありますが、異なるジャンルは3つだけです。DISTINCTがなければ、下のクエリは繰り返しを含む7行を表示してしまいます。

SQL
SELECT DISTINCT genre FROM books;

SELECT DISTINCT author FROM books;
3つの一意なジャンル、そして6人の一意な著者

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. 本を最も高いものから安いものへ並べ替えるにはどうしますか?
    • ORDER BY price
    • ORDER BY price DESC
    • SORT BY price DESC
  2. SELECT DISTINCT genre FROM books;は私たちのテーブルで何を返しますか?
    • 7つのジャンル、本ごとに1つ
    • 各ジャンルを一度だけ、つまり3行
    • 最も頻度の高いジャンル
  3. ORDER BYなしで使ったとき、LIMIT 5は何を返しますか?
    • 最も新しい5行
    • 順序が保証されない5行
    • 構文エラー