はじめに
データベースを扱う際、検索結果を特定の順番で並び替えたり、取得する件数を制限したりすることはよくあります。
SQLには、そうした処理を簡単に実現する ORDER BY
と LIMIT
という便利な機能があります。
本記事では、これらの基本的な使い方から応用例まで詳しく解説していきます。
書こうと思ったきっかけ
データ分析やWeb開発において、データの並び替えや件数制限は頻繁に行われる操作です。
しかし、ORDER BY
と LIMIT
の使い方を正しく理解していないと、意図しない結果を得たり、パフォーマンスが低下したりすることがあります。
そこで、基本的な構文から実際の活用例までをまとめ、スムーズにSQLを活用できるようにしたいと思いました。
事前準備
データベースがない場合は、まず作成してから選択します。
mysql> CREATE DATABASE my_database;
mysql> USE my_database;
テーブルの作成
まず、users
テーブルを作成し、サンプルデータを挿入します。
テーブル作成のSQL
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT,
score INT
);
サンプルデータの挿入
INSERT INTO users (name, age, score) VALUES
('Alice', 25, 85),
('Bob', 30, 90),
('Charlie', 22, 88),
('David', 28, 92),
('Eve', 27, 80);
ORDER BY とは
ORDER BY
は、SQLで取得するデータを特定の順序で並び替えるために使用される句です。デフォルトでは昇順 (ASC
) で並び替えられますが、降順 (DESC
) にすることもできます。
基本構文
SELECT カラム名 FROM テーブル名 ORDER BY カラム名 [ASC | DESC];
使用例
昇順に並び替え
SELECT name, age FROM users ORDER BY age ASC;
→ age
の値が小さい順に users
テーブルのデータを取得。
実際のターミナル画面
降順に並び替え
SELECT name, age FROM users ORDER BY age DESC;
→ age
の値が大きい順にデータを取得。
実際のターミナル画面
複数のカラムで並び替え
SELECT name, age, score FROM users ORDER BY age ASC, score DESC;
→ age
を昇順に並び替え、その中で score
を降順に並び替える。
実際のターミナル画面
LIMIT とは
LIMIT
は、取得するデータの最大件数を制限するために使用される句です。大量のデータがある場合にパフォーマンスを考慮し、必要な件数のみ取得するのに役立ちます。
基本構文
SELECT カラム名 FROM テーブル名 LIMIT 件数;
使用例
上位3件を取得
SELECT name, age FROM users ORDER BY age ASC LIMIT 3;
→ age
の昇順で上位3件を取得。
実際のターミナル画面
OFFSET を使用して範囲指定
SELECT name, age FROM users ORDER BY age ASC LIMIT 3 OFFSET 2;
→ 3件取得するが、最初の2件をスキップして3件目から取得。
実際のターミナル画面
ORDER BY と LIMIT の組み合わせ
ORDER BY
と LIMIT
を組み合わせることで、ランキング上位や最新のデータのみを取得することができます。
例: 最新の5件を取得
SELECT * FROM orders ORDER BY created_at DESC LIMIT 5;
→ created_at
の降順(最新順)で並び替え、最新の5件を取得。
例: スコア上位10件を取得
SELECT name, score FROM users ORDER BY score DESC LIMIT 10;
→ score
の高い順に10件取得。
実際のターミナル画面
まとめ
-
ORDER BY
はデータの並び順を指定するために使用。 -
LIMIT
は取得する件数を制限するために使用。 -
ORDER BY
とLIMIT
を組み合わせることで、ランキングや最新データの取得が可能。
これらの機能を適切に活用することで、SQLのパフォーマンスを向上させながら必要なデータを効率よく取得できます!