MySQLでテーブルから順序付けられた3行のみを取得する方法
ORDER BY句とLIMITを組み合わせて順序付きの3行を取得する
MySQLでテーブルから特定の順序で並べ替えた行を、指定した件数だけ取得したい場合は、ORDER BY句とLIMITを組み合わせます。ここでは、従業員IDの降順に並べ替えた上位3行を取得する具体例を紹介します。
1. サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable1551 -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> EmployeeName varchar(20) -> ); Query OK, 0 rows affected (0.52 sec)
2. レコードの挿入
INSERTコマンドを使って、テーブルにレコードを追加します。
mysql> insert into DemoTable1551(EmployeeName) values('Chris');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Robert');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Mike');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Sam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1551(EmployeeName) values('David');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Adam');
Query OK, 1 row affected (0.11 sec)
3. 全レコードの確認
SELECT文でテーブル内のすべてのレコードを表示してみます。
mysql> select * from DemoTable1551;
実行すると、以下のように6件のレコードが登録されていることがわかります。
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | | 5 | David | | 6 | Adam | +------------+--------------+ 6 rows in set (0.00 sec)
4. 順序付けられた3行のみを選択するクエリ
それでは本題です。ORDER BY EmployeeId DESCでIDの降順に並べ替え、LIMIT 0, 3で先頭(オフセット0)から3行だけを取得しています。
mysql> select * from DemoTable1551 -> order by EmployeeId desc limit 0,3;
実行結果は以下のとおりです。
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 6 | Adam | | 5 | David | | 4 | Sam | +------------+--------------+ 3 rows in set (0.00 sec)
まとめ
ORDER BY句で並べ替えの基準となる列と昇順(ASC)・降順(DESC)を指定し、LIMIT 開始位置, 取得件数で取得する行数を制限すれば、任意の順序で並べ替えたデータを必要な件数だけ効率的に取り出せます。この構文はページネーション(ページ送り)の実装などにも広く応用できるため、ぜひ使いこなせるようにしておきましょう。
-
MySQLテーブルから複数の行を削除する方法
MySQLのテーブルから複数の行(レコード)を一度に削除したい場合は、DELETEステートメントにWHERE句を組み合わせて使用します。WHERE句が削除対象となる複数の行を特定することで、条件に一致したすべての行をまとめて削除できます。基本構文DELETE FROM テーブル名 WHERE 条件;実行例まず、サンプルテーブル「names」の中身を確認しておきましょう。mysql> Select * from names; +------+-----------+ | id | name | +------+-----------+ | 1 | Rahul |
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected