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

MySQLテーブルで列に重複・三重データを含むレコードをカウントする方法

重複データを持つテーブルの準備

ここでは、stock_item という名前のテーブルを例に説明します。このテーブルでは、quantity(数量) 列に重複した値が含まれています。具体的には、商品名「Notebooks(ノート)」と「Pencil(鉛筆)」の quantity 列には同じ値「40」が格納されており、「Shirts(シャツ)」「Shoes(靴)」「Trousers(ズボン)」の3つの商品には三重の値「29」が格納されています。

mysql> Select * from stock_item;
+------------+----------+
| item_name  |quantity  |
+------------+----------+
| Calculator | 89       |
| Notebooks  | 40       |
| Pencil     | 40       |
| Pens       | 32       |
| Shirts     | 29       |
| Shoes      | 29       |
| Trousers   | 29       |
+------------+----------+
7 rows in set (0.00 sec)

重複・三重データをカウントするクエリ

次のSQLクエリを実行することで、quantity 列に含まれる重複値や三重値の合計件数を確認できます。

mysql> Select COUNT(quantity) AS duplicate_triplicate
    -> from stock_item
    -> group by quantity having duplicate_triplicate> 1;

+----------------------+
| duplicate_triplicate |
+----------------------+
|                    3 |
|                    2 |
+----------------------+
2 rows in set (0.00 sec)

結果の解釈

上記の実行結果から、quantity 列には3回繰り返されている値と、2回繰り返されている値がそれぞれ存在することがわかります。

このクエリのポイントは以下の通りです。

  • COUNT(quantity):各 quantity の値ごとに出現回数を集計します。
  • GROUP BY quantity:同じ数量の値をグループ化します。
  • HAVING duplicate_triplicate > 1:出現回数が1回のみのレコードを除外し、重複しているものだけを抽出します。

なお、WHERE句ではなくHAVING句を使用するのは、GROUP BYによる集計後の結果に対して条件を適用する必要があるためです。この手法は、データクレンジングや重複チェックなどの場面で非常に役立ちます。

  1. 【MySQL】EXISTSとサブクエリで別テーブルの列値と一致する行だけを抽出する方法

    サブクエリとEXISTSを組み合わせるあるテーブルの列値が別のテーブルの列値と一致する場合にのみデータを取得したいときは、サブクエリとEXISTSを組み合わせると簡単に実現できます。まず、1つ目のテーブルを作成しましょう。mysql> create table DemoTable1     -> (     -> Id int,     -> SubjectName varchar(20)     -> )

  2. MySQLで重複レコードを含むテーブルから特定の値を1件だけ削除する方法

    MySQLでテーブル内のレコードを削除するにはDELETE文を使用します。しかし、同じ値の重複レコードが複数存在する場合に、そのうち1件だけを削除したいケースがあります。そんなときは、LIMIT句を組み合わせることで、削除対象の件数を制限できます。基本構文delete from yourTableName where yourColumnName=yourValue limit 1;この構文では、WHERE句で削除対象の条件を指定し、LIMIT 1によって該当するレコードのうち最初の1件のみを削除します。実際にテーブルを作成して確認してみようまず、サンプル用のテーブルを作成します。mysql&