#mysql #search #count
#mysql #Поиск #количество
Вопрос:
Hy я хочу выполнить поиск слова в моей таблице, но мне нужен результат, только если слово встречается более чем в 3 строках.
Итак, в основном мой запрос заключается в следующем, который частично работает:
SELECT *
FROM `someTable`
WHERE `field_A` LIKE '%wordToFind%'
OR `field_B` LIKE '%wordToFind%'
Это работает просто отлично, в результате я увижу все строки, которые соответствовали запросу.
Итак, проблема в том, что он вернет все совпадающие строки, например, если была сопоставлена только одна строка, она вернет только одну, но я хочу, чтобы этот запрос был ограничен по крайней мере 5.
Под этим я подразумеваю, что я хочу возвращаемый результат, только если запрос соответствует по крайней мере 5 полям.
Надеюсь, я ясно выразился, спасибо.
Комментарии:
1. Это ставит максимум, он хочет установить минимум.
2. Можете ли вы привести пример с данными…
Ответ №1:
SELECT *
FROM `someTable`
WHERE (`field_A` LIKE '%wordToFind%'
OR `field_B` LIKE '%wordToFind%')
AND (SELECT COUNT(*)
FROM `someTable`
WHERE (`field_A` LIKE '%wordToFind%'
OR `field_B` LIKE '%wordToFind%')) >= 5
Это может быть не очень эффективным, поскольку может выполняться поиск строк дважды, сначала для подзапроса, а затем для основного запроса.
Комментарии:
1. я уже пробовал это, и оно не работает, потому что оно вернет мне результат, даже если есть 2 совпадения
2. Необходимы круглые скобки из-за приоритета между
AND
иOR
. Попробуйте сейчас.