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

【MySQL】1つのクエリで複数の行を取得する方法:LIKE演算子の活用

はじめに

1つのMySQLクエリで複数の行(レコード)を取得したい場合には、LIKE演算子を使用します。LIKE演算子によるパターンマッチングを活用すれば、条件に合致する複数の行を一度のクエリで効率的に抽出できます。

ここでは、まずサンプル用のテーブルを作成しましょう。

mysql> create table DemoTable1385
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.90 sec)

テストデータの挿入

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

mysql> insert into DemoTable1385(Name) values('Chris Brown');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1385(Name) values('Adam Smith');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1385(Name) values('Carol Taylor');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1385(Name) values('John Doe');
Query OK, 1 row affected (0.48 sec)
mysql> insert into DemoTable1385(Name) values('John Smith');
Query OK, 1 row affected (0.14 sec)

SELECT文でテーブル内の全レコードを確認しておきます。

mysql> select * from DemoTable1385;

実行結果は以下の通りです。

+----+--------------+
| Id | Name |
+----+--------------+
| 1 | Chris Brown |
| 2 | Adam Smith |
| 3 | Carol Taylor |
| 4 | John Doe |
| 5 | John Smith |
+----+--------------+
5 rows in set (0.00 sec)

LIKE演算子で複数の行を取得するクエリ

それでは本題です。以下のクエリでは、Nameカラムの値が「Smith」で終わるすべてのレコードを、1回のクエリで取得しています。

mysql> select * from DemoTable1385 where Name LIKE '%Smith';

実行結果は以下のようになります。

+----+------------+
| Id | Name |
+----+------------+
| 2 | Adam Smith |
| 5 | John Smith |
+----+------------+
2 rows in set (0.00 sec)

ポイントと応用

LIKE演算子と組み合わせた「%」は、任意の文字列(0文字以上)に一致するワイルドカードです。指定方法によって検索の挙動が変わります。

  • '%Smith':後方一致。「Smith」で終わる値に一致(上記の例)
  • 'Smith%':前方一致。「Smith」で始まる値に一致
  • '%Smith%':部分一致。「Smith」を含むすべての値に一致

まとめ

LIKE演算子を使うことで、「Adam Smith」と「John Smith」のように共通のパターンを持つ複数の行を、1つのMySQLクエリだけで簡単に取得できます。WHERE句との組み合わせは実務でも頻繁に使われる基本的なテクニックなので、ワイルドカードの使い方とあわせてしっかり覚えておきましょう。

  1. MySQLのUPDATE文で1つのクエリを使って複数のレコードを更新する方法

    MySQLでは、UPDATEステートメントを使うことで、1つのクエリで複数のカラムや複数のレコードの値をまとめて更新できます。この記事では、実際にサンプルテーブルを作成し、UPDATE文でデータを更新する具体的な手順を解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable     -> (     -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    &

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実