OR
文でLIKE
を使用して、MySQLでクエリを実行できるといつも思っていました。したがって、行の複数のフィールドを1つのキーワードまたは用語と比較したい場合:
SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword%';
比較する単語の配列がある場合:
SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword1%'
AND Column1 OR Column2 LIKE '%keyword2%';
ただし、構文が正しいとは思わない。次のようなものとは別にこれを書く効率的な方法はありますか?
SELECT * FROM MyTable WHERE Column1 LIKE '%keyword1%' OR Column2 LIKE
'%keyword1%' AND Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%';
私はこれについて正しく行っていますか?
これを使って::
SELECT * FROM MyTable WHERE (Column1 LIKE '%keyword1%' OR Column2 LIKE
'%keyword1%') AND (Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%');
希望する構文に最も近いものは次のとおりです。
SELECT * FROM MyTable
WHERE (CONCAT(Column1, Column2) LIKE '%keyword1%')
AND (CONCAT(Column1, Column2) LIKE '%keyword2%')
注:検索文字列の先頭にある「%」は、インデックスの使用を除外します。検索するレコードが多数ある場合は、実装を再考するのが最善です。