【MySQL入門】LIKEとORを組み合わせたテキスト検索でレコードを取得する方法
MySQLでは、LIKE演算子とOR条件を組み合わせることで、複数のキーワードのいずれかに一致するレコードを柔軟に検索できます。本記事では、実際のコード例を通じて、その基本的な使い方をわかりやすく解説します。
1. テーブルの作成
まず、検索対象となるテーブルを作成しましょう。
mysql> create table DemoTable
(
Subject text
);
Query OK, 0 rows affected (0.86 sec)2. レコードの挿入
続いて、INSERTコマンドを使用してテーブルにサンプルデータを登録します。
mysql> insert into DemoTable values('Introduction to MySQL');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values('Deep Dive using Java');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('C in Depth');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Introduction to C++');
Query OK, 1 row affected (0.48 sec)3. 登録済みレコードの確認
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------------------+ | Subject | +-----------------------+ | Introduction to MySQL | | Deep Dive using Java | | C in Depth | | Introduction to C++ | +-----------------------+ 4 rows in set (0.00 sec)
4. LIKEとORを使ったテキスト検索クエリ
ここからが本題です。「MySQL」と「using」という2つのキーワードのいずれかを含むレコードを取得するには、以下のようにWHERE句内でOR条件を組み合わせます。LIKE演算子のワイルドカード「%」は、任意の文字列(空文字を含む)にマッチします。
mysql> select *from DemoTable where Subject LIKE '%MySQL%' OR Subject LIKE '%using%';
実行結果は以下の通りです。
+-----------------------+ | Subject | +-----------------------+ | Introduction to MySQL | | Deep Dive using Java | +-----------------------+ 2 rows in set (0.00 sec)
ポイント解説
このクエリでは、「Subject列に 'MySQL' を含む」または「Subject列に 'using' を含む」という2つの条件をORでつなぐことで、どちらかに該当するレコードを一度に取得できます。LIKE '%キーワード%' の形式は部分一致検索と呼ばれ、前方一致('キーワード%')や後方一致('%キーワード')よりも自由度の高い検索が可能です。
なお、パターンの先頭にワイルドカードを付けるとインデックスが利用できず、大規模なテーブルでは検索速度が低下する場合があります。大量のテキストデータを扱う場合は、FULLTEXTインデックスやMATCH...AGAINST構文の活用も検討するとよいでしょう。
-
MySQLでGROUP BYとMAX()を使って学生ごとのMarks1・Marks2の最高得点を取得する方法
学生ごとのMarks1およびMarks2の最高得点を取得するには、MAX()関数とGROUP BY句を組み合わせて使用します。MAX()は、グループごとに最も大きい値を返す集計関数です。ここでは、学生のメールアドレスごとにレコードをグループ化し、各科目の最高得点を求めます。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable -> ( -> StudentEmailId varchar(20), &nb
-
MySQLでAND・OR演算子を組み合わせた単一クエリを使って特定のレコードを取得する方法
MySQLでは、AND演算子とOR演算子をWHERE句で組み合わせることで、複数の条件を指定しながら特定のレコードを1つのクエリで取得できます。本記事では、実際にテーブルを作成し、データを挿入して、AND・ORを組み合わせたクエリの動作を確認していきます。 1. テーブルの作成 まず、CREATE TABLE文でサンプル用のテーブルを作成します。 mysql> create table DemoTable2015 -> ( -> StudentId int, -> StudentName varchar(20), -> Stude