MySQLで最初の10レコードを選択するクエリの作成方法
はじめに
MySQLでテーブルの最初の10件のレコードを取得したい場合は、まずレコードを昇順(ASC)または降順(DESC)で並べ替え、そのうえで LIMIT 10 を使用することで、先頭の10件だけを取り出すことができます。
基本構文
select *from (select *from yourTableName ORDER BY yourColumnName ASC LIMIT 10)anyAliasName ORDER BY yourColumnName DESC;
このクエリでは、サブクエリ内で指定したカラムを基準に昇順へ並べ替えた先頭10件を取得し、外側のクエリでその結果を降順に並べ替えて表示しています。
サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成しましょう。
mysql> create table DemoTable683(Page int); Query OK, 0 rows affected (0.83 sec)
レコードの挿入
続いて、insertコマンドを使用してテーブルに複数のレコードを挿入します。
mysql> insert into DemoTable683 values(100); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable683 values(101); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable683 values(102); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable683 values(103); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable683 values(104); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable683 values(105); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable683 values(106); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable683 values(107); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable683 values(108); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable683 values(109); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable683 values(110); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable683 values(111); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable683 values(112); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable683 values(113); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable683 values(114); Query OK, 1 row affected (0.10 sec)
テーブルの全レコードを確認する
selectステートメントを実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable683;
上記のクエリを実行すると、次のような出力が得られます。
+------+ | Page | +------+ | 100 | | 101 | | 102 | | 103 | | 104 | | 105 | | 106 | | 107 | | 108 | | 109 | | 110 | | 111 | | 112 | | 113 | | 114 | +------+ 15 rows in set (0.00 sec)
このように、テーブルには合計15件のレコードが登録されていることがわかります。
最初の10レコードを取得するクエリ
それでは、MySQLで最初の10レコードを選択する実際のクエリを見てみましょう。
mysql> select *from (select *from DemoTable683 ORDER BY Page ASC LIMIT 10)tbl ORDER BY Page DESC;
このクエリを実行すると、以下のような出力が得られます。
+------+ | Page | +------+ | 109 | | 108 | | 107 | | 106 | | 105 | | 104 | | 103 | | 102 | | 101 | | 100 | +------+ 10 rows in set (0.00 sec)
実行結果から、Pageカラムの値が小さい方から数えて10件目までのレコード(100〜109)が正しく取得され、降順で表示されていることが確認できます。この手法を使えば、任意のテーブルから特定の順序での先頭N件を簡単に抽出できます。
-
MySQLクエリで「〜より大きくない」条件を記述する方法
MySQLで「〜より大きくない」を表すには?MySQLのクエリにおいて「〜より大きくない(not greater than)」という条件は、比較演算子の「〜以下(<=)」を使うことで簡単に表現できます。基本の構文は次のとおりです。select * from テーブル名 where カラム名<=値;サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1480 -> ( -> StudentName varchar(40), -> StudentMarks int
-
MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)
MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599 -> ( -> Shippingdate d