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 は % などのワイルドカードと組み合わせることで部分一致検索にも対応できるため、状況に応じて使い分けるとよいでしょう。
-
MySQLでテーブル内の特定の行だけを削除する方法|NOT IN()を使った実践テクニック
MySQLで特定の行以外を一括削除したい場合、NOT IN() 演算子を使用すると簡単に実現できます。NOT IN() は「指定した値のリストに含まれない行」を対象にできるため、残したい行のIDを列挙すれば、それ以外の行だけを効率よく削除できます。この記事では、サンプルテーブルを作成し、実際にデータを挿入してから、NOT IN() を使って特定の行のみを削除する手順を解説します。1. サンプルテーブルの作成まずは、StudentId を自動採番(AUTO_INCREMENT)に設定したテーブルを作成します。AUTO_INCREMENT=101 を指定することで、IDは101から順番に割り振られ
-
MySQL REGEXP句で括弧をエスケープする方法|「()」付きの特定の値だけを抽出する
MySQL REGEXP句で括弧をエスケープして特定の値を抽出する方法 MySQLのREGEXP句で正規表現を使う場合、括弧「(」と「)」はグループ化を意味する特殊文字(メタ文字)として扱われます。そのため、文字列に含まれる実際の括弧を検索したいときは、適切にエスケープする必要があります。本記事では、文字クラス「[(]」「[)]」を使って括弧をエスケープし、「()」で囲まれた値を含むレコードだけを抽出する方法を、実際のサンプルとともに解説します。 1. サンプルテーブルを作成する まず、検索対象となるテーブルを作成します。 mysql> create table DemoTable19