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

MySQLの1つのクエリで行数をカウントして並べ替える方法

MySQLでは、GROUP BY句とORDER BY句を組み合わせることで、1つのクエリだけで各行の件数をカウントし、その件数順に並べ替えることができます。ここでは、具体的なサンプルを使って手順を解説します。

1. サンプルテーブルの作成

まず、テーブルを作成します。

mysql> create table DemoTable783 (
   FirstName varchar(100)
);
Query OK, 0 rows affected (0.65 sec)

2. レコードの挿入

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

mysql> insert into DemoTable783 values('Adam');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable783 values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable783 values('Chris');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable783 values('Adam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable783 values('Adam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable783 values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable783 values('Robert');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable783 values('Adam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable783 values('Chris');
Query OK, 1 row affected (0.14 sec)

3. テーブルの内容を確認

SELECTステートメントを使って、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable783;

実行すると、次のような結果が得られます。

+-----------+
| FirstName |
+-----------+
| Adam      |
| Chris     |
| Chris     |
| Adam      |
| Adam      |
| Robert    |
| Robert    |
| Adam      |
| Chris     |
+-----------+
9 rows in set (0.00 sec)

4. 行数をカウントして並べ替えるクエリ

MySQLで行数をカウントし、その件数の降順に並べ替えるには、以下のクエリを使用します。COUNT(*)で各名前の出現回数を集計し、GROUP BYでグループ化、ORDER BY COUNT(*) DESCで件数の多い順にソートしています。

mysql> select FirstName, count(*) from DemoTable783 group by FirstName order by count(*) desc;

実行すると、次のような結果が得られます。

+-----------+----------+
| FirstName | count(*) |
+-----------+----------+
| Adam      | 4        |
| Chris     | 3        |
| Robert    | 2        |
+-----------+----------+
3 rows in set (0.00 sec)

このように、GROUP BY句とCOUNT(*)関数、ORDER BY句を組み合わせることで、1つのクエリだけで集計とソートを同時に実行できます。昇順に並べ替えたい場合は、DESCASCに変更してください。


  1. MySQLで1つのクエリを使ってSELECTとINSERTを同時に実行する方法

    MySQLでは、INSERT INTO ... SELECT構文とUNION ALLを組み合わせることで、1つのクエリだけで別テーブルからデータを選択(SELECT)し、挿入(INSERT)することができます。本記事では、実際のサンプルコードを使ってその手順をわかりやすく解説します。1. 最初のテーブルを作成するまず、データの挿入先となる最初のテーブルを作成します。以下のクエリを実行してください。mysql> create table DemoTable1 -> ( -> StudentName varchar(20), -> StudentMarks

  2. MySQLでAND・OR演算子を組み合わせた単一クエリを使って特定のレコードを取得する方法

    MySQLでは、AND演算子とOR演算子をWHERE句で組み合わせることで、複数の条件を指定しながら特定のレコードを1つのクエリで取得できます。本記事では、実際にテーブルを作成し、データを挿入して、AND・ORを組み合わせたクエリの動作を確認していきます。 1. テーブルの作成 まず、CREATE TABLE文でサンプル用のテーブルを作成します。 mysql> create table DemoTable2015 -> ( -> StudentId int, -> StudentName varchar(20), -> Stude