MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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 開始位置, 取得件数で取得する行数を制限すれば、任意の順序で並べ替えたデータを必要な件数だけ効率的に取り出せます。この構文はページネーション(ページ送り)の実装などにも広く応用できるため、ぜひ使いこなせるようにしておきましょう。

  1. MySQLテーブルから複数の行を削除する方法

    MySQLのテーブルから複数の行(レコード)を一度に削除したい場合は、DELETEステートメントにWHERE句を組み合わせて使用します。WHERE句が削除対象となる複数の行を特定することで、条件に一致したすべての行をまとめて削除できます。基本構文DELETE FROM テーブル名 WHERE 条件;実行例まず、サンプルテーブル「names」の中身を確認しておきましょう。mysql> Select * from names; +------+-----------+ | id | name | +------+-----------+ | 1 | Rahul |

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected