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

MySQLでORDER BY DESCを使って降順ソートし、先頭の3件のレコードを表示する方法

データを降順(DESC)で並べ替えたうえで、先頭の数件だけを取得したいケースはよくあります。その場合は、ORDER BY ... DESCLIMITを組み合わせることで簡単に実現できます。ここでは、具体的なサンプルを使って手順を解説します。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(100)
);
Query OK, 0 rows affected (0.59 sec)

レコードの挿入

insertコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable(UserName) values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(UserName) values('Robert');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(UserName) values('Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(UserName) values('David');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(UserName) values('Mike');
Query OK, 1 row affected (0.10 sec)

登録済みレコードの確認

select文を実行して、テーブル内のすべてのレコードを表示してみます。

mysql> select *from DemoTable;

このクエリを実行すると、次のような出力が得られます。

+--------+----------+
| UserId | UserName |
+--------+----------+
|      1 | Chris    |
|      2 | Robert   |
|      3 | Bob      |
|      4 | David    |
|      5 | Mike     |
+--------+----------+
5 rows in set (0.00 sec)

降順ソート後に先頭3件を表示するクエリ

それでは本題です。MySQLの列にORDER BY DESCを適用したうえで、最初の3件のレコードを表示するには、次のようにクエリを記述します。

mysql> select *from DemoTable order by UserId DESC LIMIT 0,3;

実行すると、次のような結果が出力されます。

+--------+----------+
| UserId | UserName |
+--------+----------+
|      5 | Mike     |
|      4 | David    |
|      3 | Bob      |
+--------+----------+
3 rows in set (0.00 sec)

ポイント解説

LIMIT 0,3の「0」は取得開始位置(オフセット)、「3」は取得する件数を意味します。このクエリではUserIdを基準に降順へ並べ替えているため、IDが大きい順に5、4、3のレコードが先頭から取得されています。なお、オフセットが0の場合はLIMIT 3と省略して記述しても同じ結果になります。新しいデータほどIDが大きくなる設計のテーブルであれば、この方法は「最新の3件を取得したい」という要件にもそのまま活用できます。

  1. MySQLで日付データから月の初日と末日を取得する方法

    MySQLでは、日付型のカラムから「その月の最初の日」と「最後の日」を簡単に求めることができます。この記事では、実際にテーブルを作成し、サンプルデータを使いながら具体的な手順を解説します。1. テーブルの作成まず、日付を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (0.73 sec)2. レコードの挿入次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。mysql>

  2. MySQLのORDER BY ASCでNULL値を最下部に表示する方法

    MySQLのORDER BY ASCでNULL値を最下部に表示する方法MySQLでは、ORDER BY句を昇順(ASC)で使用した場合、デフォルトではNULLが先頭(上部)に表示されます。しかし実務では、「NULLは一番下に表示したい」というケースがよくあります。このような場合には、CASE式とORDER BYを組み合わせることで簡単に実現できます。この記事では、NULLや空文字列()を含むデータを昇順ソートしつつ、NULLを最下部に表示する方法を、具体的なサンプルコードとともに解説します。1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table D