SQL初めてのSQL

Day 1取り出す — SELECT でデータを読む

ORDER BY と LIMIT — 並び替えて、必要な件数だけ

ORDER BY で結果を並び替え、LIMIT で件数を絞る方法を読めるようにします。「新しい順に10件」のような実務でよく出る形を覚えます。

並べ替えて、上から何件かだけ見る

取り出した行は、そのままだとバラバラの順で出てくることがあります。「年齢の若い順に見たい」「新しい登録順に見たい」というときに使うのが ORDER BY(オーダー バイ)です。うしろに「どの列で並べるか」を書きます。

SQL
SELECT name, age
FROM users
ORDER BY age;
age の小さい順(昇順)に並べて取り出す

何も付けないと昇順(小さい順・古い順)になります。大きい順(新しい順)にしたいときは、列名のうしろに DESC を付けます。逆に、はっきり昇順と書きたいときは ASC を付けます。

  • ASC = 昇順(小さい順・古い順)。付けなくてもこれが標準
  • DESC = 降順(大きい順・新しい順)
SQL
SELECT name, created_at
FROM users
ORDER BY created_at DESC
LIMIT 10;
登録日時が新しい順に並べて、上から10件だけ取り出す

最後の LIMIT 10 が「上から10件だけにしてね」という指定です。ORDER BY で新しい順に並べてから LIMIT 10 とすることで、「新しい順に10件」という実務でとてもよく使う形になります。

なぜ並べてから絞るの?

LIMIT は「上から何件」を取るだけなので、先に ORDER BY で順番を決めておかないと、どの10件が来るか運任せになります。並べ替え → 件数制限、の順番で考えると狙った結果が得られます。

順番を決めずに絞る

SELECT * FROM users LIMIT 10; は、10件は取れるが「どの10件か」が定まらない。

並べてから絞る

ORDER BY created_at DESC LIMIT 10; なら「いちばん新しい10件」とはっきり言える。

AIにはこう聞く

「users から登録が新しい順に10件だけ取り出す SQL を書いて。ORDER BY の DESC と LIMIT がそれぞれ何をしているか日本語で説明して」

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

ORDER BY age DESC はどんな並び順になる?

Q2

「新しい順に10件」を出すために組み合わせるのはどれ?

Q3

ORDER BY と LIMIT はそれぞれ何をするものか、そしてなぜ組み合わせて使うことが多いのかを説明してみましょう。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。