MySQLで3回以上出現するレコードを表示する方法
MySQLで3回以上出現するレコードを表示したい場合は、GROUP BY句とHAVING句を組み合わせて使用します。まずはサンプルテーブルを作成してみましょう。
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Subject varchar(100)
-> );
Query OK, 0 rows affected (0.53 sec)
続いて、insertコマンドを使用してテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable(Subject) values('MySQL');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Subject) values('MongoDB');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(Subject) values('MySQL');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Subject) values('Java');
Query OK, 1 row affected (0.56 sec)
mysql> insert into DemoTable(Subject) values('SQL Server');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Subject) values('MongoDB');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Subject) values('MySQL');
Query OK, 1 row affected (0.48 sec)
select文を使って、テーブル内のすべてのレコードを表示してみます。
mysql> select *from DemoTable;
出力結果
+----+------------+ | Id | Subject | +----+------------+ | 1 | MySQL | | 2 | MongoDB | | 3 | MySQL | | 4 | Java | | 5 | SQL Server | | 6 | MongoDB | | 7 | MySQL | +----+------------+ 7 rows in set (0.00 sec)
上記の出力結果を見ると、「MySQL」が3回、「MongoDB」が2回出現していることが確認できます。それでは、2回より多く(つまり3回以上)出現するレコードのみを抽出するクエリを見ていきましょう。
mysql> select Subject,count(Subject) freq from DemoTable -> group by Subject -> having count(Subject) > 2;
出力結果
+---------+------+ | Subject | freq | +---------+------+ | MySQL | 3 | +---------+------+ 1 row in set (0.00 sec)
HAVING count(Subject) > 2 という条件によって、出現回数が2回を超える(3回以上の)「Subject」だけが結果に表示されます。この例では「MySQL」のみが3回出現しているため、該当するレコードとして返されています。なお、条件を変更すれば「4回以上」「5回以上」など、任意の出現回数での絞り込みも簡単に行えます。
-
MySQLのGROUP BY句で日付をグループ化してレコードを表示する方法
MySQLで日付をグループ化する基本 MySQLで日付データをグループ化してレコードを表示するには、GROUP BY句を使用します。この記事では、顧客ごとに出荷日の最小値と最大値を取得する例を通じて、GROUP BY句の使い方を詳しく解説します。 1. サンプルテーブルの作成 まず、顧客名と出荷日を格納するテーブルを作成します。 mysql> create table DemoTable2002 ( CustomerName varchar(20), CustomerShippingDate datetime ); Query OK, 0 rows affected (
-
MySQLでTRUE/FALSEのレコードを0/1として表示する方法
MySQLでTRUE/FALSEのレコードを0/1として表示する方法MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。1. テーブルの作成まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。mysql> create table DemoTable2035 -> (