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