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 オフセット, 件数」の形式で書くこともでき、これにより任意の位置からレコードを取得することも可能です。
-
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
-
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