Mysql — Поиск слова в тексте json и выдача результата только в том случае, если оно встречается в большем количестве строк

#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 . Попробуйте сейчас.