MySQL の上位 N 行を選択する
プロジェクトの要件によっては、MySQL データベースの上位 N 行を選択する必要がある場合があります。
n
の値は要件によって異なります。TOP1 行または TOP30 行にすることができます。MySQL データベースの LIMIT
句を使用して上位 N 行を選択する方法を学習します。
これらのクエリは、ページングで使用したり、最近の購入やトランザクションを検索したりすることで利用できます。この機能を実行するには、データベースごとに構文が異なることに注意することも重要です。
SQL Server は SELECT TOP
を使用し、MySQL は LIMIT
を使用し、Oracle は ROWNUM
と FETCH FIRST n ROWS ONLY
を使用します。
LIMIT
句を使用して MySQL の上位 N 行を選択する
トップ N クエリを使用するということは、結果を特定の行数に制限することを意味します。これらは、結果セットから最良または最新の行を取得するために使用されます。
このチュートリアルでは、customer_id
、customer_firstname
、customer_lastname
、および customer_age
を持つ customer
という名前のテーブルを使用しています。この customer
テーブルに、現時点で次のようなデータを入力しました。
customer
テーブルを使用して、MySQL で LIMIT
を練習します。customer
テーブルから上位 3つのレコードを選択します。
サンプルコード:
SELECT * FROM customer LIMIT 3;
出力:
最年少の 3 人の顧客を獲得し、予測のために分析したいと考えています。次のコードサンプルを見ることができます。
サンプルコード:
SELECT * FROM customer
ORDER BY customer_age ASC
LIMIT 3;
まず、テーブルデータは customer_age
に関して順序付けられます。最年少の customer
が一番上になり、古い方が一番下になります。
次に、順序付けされたデータの結果セットから上位 3 行を選択します。次のスクリーンショットを参照してください。
出力:
オフセット 3
から始まる上位 4 行を選択する場合はどうなりますか?次の構文を使用してこれを行うことができます。
SELECT * FROM you_table_name
ORDER BY column_name ASC
LIMIT offset,row_count;
LIMIT
句の最初の行の offset は 0
から始まることを常に覚えておいてください。このシナリオのサンプルコードは次のとおりです。
サンプルコード:
SELECT * FROM customer
ORDER BY customer_age ASC
LIMIT 3,4;
出力:
または、次のように行数とオフセットを指定して LIMIT
句を使用することもできます。
# You can also write the above query in this way
SELECT * FROM person.customer
ORDER BY customer_age ASC
LIMIT 1 OFFSET 4;
出力:
クエリで ASC
を DESC
に置き換えることにより、テーブルを降順で並べ替えることもできます。
まとめ
プロジェクトの要件に応じて、結果セットの行数を制限できると結論付けました。
また、LIMIT
句は ORDER BY
と一緒に使うことも、ORDER BY
なしに使うこともできることを学びました。