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

MySQLで特定の重複レコードのみを抽出して表示する方法

MySQLのテーブルに同じ値が重複して登録されている場合、その中から特定の値を持つ重複レコードだけを取り出したいことがあります。そんなときに便利なのが LIKE 演算子です。

基本構文

特定の重複レコードのみを表示するには、以下のように LIKE 演算子を使います。

SELECT * FROM テーブル名 WHERE カラム名 LIKE '検索したい値';

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (1.03 sec)

テストデータの挿入

次に、INSERT文を使って重複を含むレコードを挿入します。

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.30 sec)

登録済みレコードの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select *from DemoTable;

実行結果は以下の通りです。「John」と「Chris」がそれぞれ2件ずつ重複しているのがわかります。

+-------+
|  Name |
+-------+
| John  |
| Chris |
| John  |
| Bob   |
| Chris |
+-------+
5 rows in set (0.00 sec)

特定の重複レコードを抽出するクエリ

ここで、「John」という値が重複しているレコードだけを取得してみましょう。LIKE 演算子を使ったクエリは次のようになります。

mysql> select *from DemoTable where Name like 'John';

実行結果:

+------+
| Name |
+------+
| John |
| John |
+------+
2 rows in set (0.03 sec)

まとめ

このように、WHERE 句と LIKE 演算子を組み合わせることで、テーブル内の特定の値を持つ重複レコードだけを簡単に抽出できます。なお、完全一致で検索する場合は = 演算子でも同じ結果が得られます。LIKE% などのワイルドカードと組み合わせることで部分一致検索にも対応できるため、状況に応じて使い分けるとよいでしょう。

  1. MySQLでテーブル内の特定の行だけを削除する方法|NOT IN()を使った実践テクニック

    MySQLで特定の行以外を一括削除したい場合、NOT IN() 演算子を使用すると簡単に実現できます。NOT IN() は「指定した値のリストに含まれない行」を対象にできるため、残したい行のIDを列挙すれば、それ以外の行だけを効率よく削除できます。この記事では、サンプルテーブルを作成し、実際にデータを挿入してから、NOT IN() を使って特定の行のみを削除する手順を解説します。1. サンプルテーブルの作成まずは、StudentId を自動採番(AUTO_INCREMENT)に設定したテーブルを作成します。AUTO_INCREMENT=101 を指定することで、IDは101から順番に割り振られ

  2. MySQL REGEXP句で括弧をエスケープする方法|「()」付きの特定の値だけを抽出する

    MySQL REGEXP句で括弧をエスケープして特定の値を抽出する方法 MySQLのREGEXP句で正規表現を使う場合、括弧「(」と「)」はグループ化を意味する特殊文字(メタ文字)として扱われます。そのため、文字列に含まれる実際の括弧を検索したいときは、適切にエスケープする必要があります。本記事では、文字クラス「[(]」「[)]」を使って括弧をエスケープし、「()」で囲まれた値を含むレコードだけを抽出する方法を、実際のサンプルとともに解説します。 1. サンプルテーブルを作成する まず、検索対象となるテーブルを作成します。 mysql> create table DemoTable19