MySQL 速習チュートリアル

MySQL LIMIT句

1. MySQL LIMIT句

LIMIT句は、返されるレコードの数を制限するために使用されます。

LIMIT句は、数万件規模のレコードを持つ巨大なテーブルを扱う際に非常に有用です。大量のレコードを一度に取得しようとすると、データベースやネットワークのパフォーマンスに大きな負荷がかかるためです。

2. LIMITの構文

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

3. デモ用データベース

以下は、Northwindサンプルデータベースの「Customers」テーブルから抽出したデータです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

4. MySQL LIMITの使用例

以下のSQLは、「Customers」テーブルから最初の3つのレコードを選択します。

4.1 基本的なLIMITの例

独自のSQLサーバーで試してみましょう:

/* 最初の3件のレコードのみを取得 */
SELECT * FROM Customers
LIMIT 3;

4.2 4〜6件目のレコードを取得する場合(OFFSET)

特定の範囲(例:4件目から6件目まで)を取得したい場合はどうすればよいでしょうか?MySQLには、OFFSET(オフセット)を使用してこれを処理する方法が用意されています。

以下のSQLは、「3件のレコードのみを返すが、最初の3件を飛ばして4件目から開始する(OFFSET 3)」という指定になります。

/* 最初の3件をスキップし、その後の3件を取得 */
SELECT * FROM Customers
LIMIT 3 OFFSET 3;

5. WHERE句を伴うLIMIT

以下のSQLは、「Customers」テーブルの中から、国(Country)が「Germany」である最初の3つのレコードを選択します。

/* 国がGermanyのデータの中から最初の3件を抽出 */
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;

6. ORDER BY句を伴うLIMIT

以下のSQLは、まず顧客を国(Country)ごとにソートし、そのソート結果の最初の3レコードを返します。

/* 国名でソートした結果から最初の3件を取得 */
SELECT * FROM Customers
ORDER BY Country
LIMIT 3;