MySQL LIMIT句
1. MySQL LIMIT句
LIMIT句は、返されるレコードの数を制限するために使用されます。
LIMIT句は、数万件規模のレコードを持つ巨大なテーブルを扱う際に非常に有用です。大量のレコードを一度に取得しようとすると、データベースやネットワークのパフォーマンスに大きな負荷がかかるためです。
2. LIMITの構文
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;3. デモ用データベース
以下は、Northwindサンプルデータベースの「Customers」テーブルから抽出したデータです。
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
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;