Ответ 1
Используйте это::
SELECT * FROM MyTable WHERE (Column1 LIKE '%keyword1%' OR Column2 LIKE
'%keyword1%') AND (Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%');
Я всегда думал, что вы можете использовать OR
в статусе LIKE
для запроса вещей в MySQL. Итак, если бы я хотел сравнить несколько полей в строке с одним ключевым словом или термином:
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%')
Примечание: "%" в начале строки поиска исключает использование индексов. Если для поиска требуется большое количество записей, лучше всего пересмотреть реализацию.