ORDER BYとLIMITの使い方|SQLで並び替えと上位N件取得をする方法

未分類

この記事で分かること

  • ORDER BYとは何か と、SQLで並び替えに使う基本を学べます。
  • 昇順(ASC)・降順(DESC) の違いが分かります。
  • LIMIT を使って、上位N件だけ取り出す方法を学べます。
  • ORDER BY と LIMIT を組み合わせて、よく使う実践的なSQL を書けるようになります。

はじめに:SQLは「取り出す」だけでなく「並べる」と便利になる

SQLを学び始めると、まずは SELECT や WHERE を使って、必要なデータを取り出せるようになります。

ただ、実際には「取り出す」だけでは足りない場面がよくあります。

  • 年齢が高い順にユーザーを見たい
  • 新しい日付の順にデータを並べたい
  • 値段が高い商品を上から3件だけ見たい

このようなときに使うのが ORDER BY と LIMIT です。

この記事では、SQLほぼ初心者の方向けに、

  • ORDER BY の基本
  • ASC / DESC の使い分け
  • LIMIT の使い方
  • ORDER BY と LIMIT を組み合わせる例

を、サンプルデータを使いながらやさしく整理していきます。


1. ORDER BYとは何か

ORDER BY は、取り出した結果をどの順番で並べるか を指定するための句です。

基本形は次のとおりです。

SELECT 列名
FROM テーブル名
ORDER BY 列名;

たとえば、users テーブルを年齢順に並べたいなら、次のように書きます。

SELECT *
FROM users
ORDER BY age;

このSQLを書くと、age 列を基準にして結果が並び替えられます。

WHERE句が「どの行を取るか」を決めるものだとすると、
ORDER BY は 「取った行をどういう順番で並べるか」 を決めるものです。


2. ASCとDESCの違い

ORDER BY では、並び順を指定できます。

2-1. ASCは昇順

SELECT *
FROM users
ORDER BY age ASC;
  • ASC は 昇順 を意味します。
  • 数値なら小さい順、文字列ならあいうえお順やアルファベット順に近い並びになります。

ASC は省略できることも多いので、次の2つはほぼ同じ意味です。

SELECT *
FROM users
ORDER BY age;
SELECT *
FROM users
ORDER BY age ASC;

2-2. DESCは降順

SELECT *
FROM users
ORDER BY age DESC;
  • DESC は 降順 を意味します。
  • 数値なら大きい順、日付なら新しい順に並べたいときによく使います。

初心者のうちは、

  • 若い順・古い順・小さい順 → ASC
  • 高い順・新しい順・大きい順 → DESC

と覚えると分かりやすいです。


3. LIMITとは何か

LIMIT は、結果を何件まで表示するか を指定するための句です。

基本形は次のとおりです。

SELECT 列名
FROM テーブル名
LIMIT 件数;

たとえば、users テーブルの先頭2件だけを見たいなら、次のように書きます。

SELECT *
FROM users
LIMIT 2;

これで、結果のうち 最初の2件だけ が表示されます。

ただし、ここで1つ大事な点があります。

LIMITだけを書くと、「どの順番の上位2件か」が曖昧になる

そのため、実務では ORDER BY と組み合わせて使うことが多い です。


4. ORDER BYとLIMITを組み合わせる

ORDER BY と LIMIT を一緒に使うと、「並べたうえで上位だけ取る」 ことができます。

4-1. 年齢が高い順に上位2件を取る

SELECT *
FROM users
ORDER BY age DESC
LIMIT 2;

このSQLは、次の順で動いているイメージです。

  1. users テーブルのデータを取り出す
  2. age の高い順に並べる
  3. 上から2件だけ残す

つまり、「年齢が高いユーザー上位2件」を取り出していることになります。

4-2. 名前をアルファベット順に並べて3件だけ表示する

SELECT *
FROM users
ORDER BY name ASC
LIMIT 3;

この場合は、name を基準に昇順で並べたあと、先頭3件を表示します。


5. サンプルデータで試してみよう

ブラウザ内SQLiteやオンラインSQLプレイグラウンドが使えるなら、次のSQLでそのまま試せます。

5-1. テーブル作成とデータ投入

CREATE TABLE users (
  id    INTEGER PRIMARY KEY,
  name  TEXT,
  age   INTEGER,
  city  TEXT
);

INSERT INTO users (name, age, city) VALUES
  ('Alice', 25, 'Tokyo'),
  ('Bob',   32, 'Osaka'),
  ('Carol', 29, 'Nagoya'),
  ('Dave',  41, 'Fukuoka');

5-2. ORDER BY の練習

SELECT *
FROM users
ORDER BY age ASC;
SELECT *
FROM users
ORDER BY age DESC;

5-3. LIMIT の練習

SELECT *
FROM users
LIMIT 2;

5-4. ORDER BY と LIMIT を一緒に使う

SELECT *
FROM users
ORDER BY age DESC
LIMIT 2;

まずはこの4つを実行してみると、

  • 並び替えだけする
  • 件数だけ絞る
  • 並び替えてから上位を取る

の違いが体感しやすくなります。


6. ORDER BYとLIMITで初心者がつまずきやすいポイント

6-1. LIMITだけ使って満足してしまう

SELECT *
FROM users
LIMIT 2;

このSQLでも2件は取れますが、どの2件になるかの順番が重要なら、ORDER BY が必要です。

「上位2件を見たい」と思ったときは、たいてい次のように書く方が意図に合います。

SELECT *
FROM users
ORDER BY age DESC
LIMIT 2;

6-2. ASCとDESCを逆に覚える

  • ASC = 昇順
  • DESC = 降順

ここは最初に混乱しやすいので、
「高い順・新しい順は DESC」 と覚えると実務では使いやすいです。

6-3. WHEREとORDER BYの役割が混ざる

  • WHERE → 行を絞り込む
  • ORDER BY → 並び順を決める
  • LIMIT → 件数を絞る

この3つはセットで使われることが多いですが、役割は別です。
混ざってきたら、この3つを分けて考えると整理しやすくなります。

6-4. 「何を基準に並べるか」があいまいになる

ORDER BY では、どの列を基準にするか を意識するのが大切です。

  • 年齢で並べたい → ORDER BY age
  • 名前で並べたい → ORDER BY name
  • 日付で並べたい → ORDER BY created_at

「何順で見たいのか」を日本語で先に考えると、SQLが書きやすくなります。


7. まとめ

ORDER BY と LIMIT を使うと、SQLで 見たい順番に並べて、必要な件数だけ取り出す ことができるようになります。

今回のポイントをまとめると、次のとおりです。

  • ORDER BY は並び順を決める
  • ASC は昇順、DESC は降順
  • LIMIT は表示件数を制限する
  • 実務では ORDER BY と LIMIT をセットで使うことが多い

SQL初心者にとって、ORDER BY と LIMIT は 「データを見る力」を一段上げる基本 です。
まずは SELECT * FROM users; に慣れたら、次は並び替えと上位N件取得も試してみてください。


次に読む

ORDER BY や LIMIT を試せる環境をまだ用意していない場合や、基本のSQLから順番に学びたい場合は、次の記事もおすすめです。

タイトルとURLをコピーしました