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

MySQLクエリで降順の結果を指定した件数だけ取得する方法

MySQLで検索結果を降順に並べて、そのうち固定件数だけを取得したい場合は、ORDER BY句DESCキーワード、そしてLIMIT句を組み合わせて使用します。

基本構文

降順(大きい値から小さい値へ)で並べ替えるにはDESCを指定します。さらにLIMITを使うことで、取得するレコード数を制限できます。

SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 取得件数;

実際の例

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable (Id int, Name varchar(100));
Query OK, 0 rows affected (0.73 sec)

データの挿入

INSERTコマンドを使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable values(100,'John');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(101,'Chris');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(102,'Robert');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values(103,'Bob');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(104,'Adam');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(105,'James');
Query OK, 1 row affected (0.18 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果

+------+--------+
| Id   | Name   |
+------+--------+
| 100  | John   |
| 101  | Chris  |
| 102  | Robert |
| 103  | Bob    |
| 104  | Adam   |
| 105  | James  |
+------+--------+
6 rows in set (0.00 sec)

6件のレコードが登録されていることが確認できます。

降順で3件だけ取得する

Nameカラムを基準に降順で並べ替え、先頭の3件のみを取得します。

mysql> select *from DemoTable order by Name DESC LIMIT 3;

実行結果

+------+--------+
| Id   | Name   |
+------+--------+
| 102  | Robert |
| 100  | John   |
| 105  | James  |
+------+--------+
3 rows in set (0.00 sec)

解説

このクエリでは、Nameカラムの値をアルファベットの逆順(Z→A)に並べ替えています。「Robert」→「John」→「James」の順になり、LIMIT 3によって上位3件のみが返されています。

なお、昇順(A→Z)で並べ替えたい場合はDESCを省略するか、代わりにASCを指定してください。また、LIMIT句は「LIMIT オフセット, 件数」の形式で書くこともでき、これにより任意の位置からレコードを取得することも可能です。

  1. MySQLクエリで4番目に高い値を取得する方法(LIMIT OFFSET活用)

    MySQLで4番目に高い値を取得するには?テーブルから4番目に高い値を取得するには、ORDER BY句で降順に並べ替え、LIMITとOFFSETを組み合わせるのが最もシンプルな方法です。まずは、動作を確認するためのサンプルテーブルを作成しましょう。mysql> create table DemoTable (     Amount int ); Query OK, 0 rows affected (0.88 sec)次に、INSERTコマンドを使ってテーブルにレコードを挿入します。mysql> insert into DemoTable va

  2. MySQLでクエリ結果をランダムに並べ替え、ランダムな行を選択する方法

    MySQLでクエリの結果をランダムに並べ替えたい場合は、ORDER BY RAND() を使用します。WHERE句で絞り込んだ結果に対してランダムな順序を適用し、LIMIT句と組み合わせることで、指定した件数の行をランダムに取得できます。基本構文select * from DemoTable1559 where yourColumnName IN(yourValue1,yourValue2,....N) order by rand() limit yourLimitValue;サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。mysql> create table Dem