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

MySQLで値の大きい上位3件のレコードを取得する方法

MySQLでは、ORDER BY句とLIMIT句を組み合わせることで、特定のカラムの値が大きい上位レコードを簡単に取得できます。ここでは、学生のスコアが高い上位3件のレコードを取得する例を紹介します。

1. テーブルの作成

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

mysql> create table DemoTable1614
-> (
-> StudentName varchar(20),
-> StudentScore int
-> );
Query OK, 0 rows affected (0.78 sec)

2. レコードの挿入

次に、INSERT文を使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable1614 values('Adam',65);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1614 values('Chris',89);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1614 values('Bob',58);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1614 values('Sam',98);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1614 values('Mike',87);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1614 values('Carol',79);
Query OK, 1 row affected (0.12 sec)

3. 全レコードの表示

SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable1614;

実行結果は以下の通りです。

+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Adam | 65 |
| Chris | 89 |
| Bob | 58 |
| Sam | 98 |
| Mike | 87 |
| Carol | 79 |
+-------------+--------------+
6 rows in set (0.00 sec)

4. スコアの高い上位3件を取得するクエリ

値の大きいレコードを3件取得するには、ORDER BY StudentScore DESCでスコアを降順に並べ替え、LIMIT 3で先頭3件のみを取得します。

mysql> select * from DemoTable1614 order by StudentScore DESC LIMIT 3;

実行結果は以下の通りです。

+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Sam | 98 |
| Chris | 89 |
| Mike | 87 |
+-------------+--------------+
3 rows in set (0.00 sec)

まとめ

ORDER BY カラム名 DESC LIMIT 取得件数という組み合わせにより、指定したカラムの値が大きいレコードを任意の件数だけ取得できます。この手法は、ランキング表示やベストスコアの抽出など、さまざまな場面で活用できる便利なテクニックです。逆に値の小さいレコードを取得したい場合は、DESCを外して昇順(ASC)に並べ替えれば対応できます。

  1. MySQLのINSERT INTO SELECT文で複数のテーブルからレコードを挿入する方法

    複数のテーブルからレコードを挿入するには、INSERT INTO ... SELECT 文を使用します。この記事では、2つのテーブルのデータを組み合わせて、別のテーブルへレコードを挿入する手順を、実際の実行例とともに解説します。 1つ目のテーブルを作成する まず、挿入元となる1つ目のテーブルを作成しましょう。 mysql> create table DemoTable1943 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec) サンプルデータを挿入する INSERTコマンドを使って、テーブルにレコー

  2. 【MySQL】GROUP BYとMAX()を使って同名の学生レコードから最大年齢を取得する方法

    はじめに MySQLで、同じ名前の学生が複数登録されているテーブルから、名前ごとの最大年齢を取得したいケースはよくあります。このような場合には、GROUP BY句と集計関数のMAX()を組み合わせることで、シンプルかつ効率的に実現できます。 本記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、学生名ごとに最大年齢を取得する手順を詳しく解説します。 テーブルの作成 まず、サンプル用のテーブルを作成しましょう。 mysql> create table DemoTable1964 ( StudentName varchar(20), StudentAge int