2017-01-01 8 views
1

Я знаю, как получить все результаты, которые содержат несколько слов:MySQL - полнотекстовый поиск - обратный

SELECT * FROM `table` WHERE MATCH (`row`) AGAINST ('+word1 +word2' IN BOOLEAN MODE) 

Но как я могу все результаты, которые не содержит слова: «word1», «word2» ?? Мне нужен оператор, что-то вроде «NOT IN». Итак, как я могу получить из базы данных все записи, которые не содержат конкретных слов в запросе, используя полнотекстовый поиск?

Спасибо.

+0

'NOT IN' является допустимой конструкцией. –

+0

Я знаю, и именно поэтому я спросил об этом здесь ... Я хочу что-то альтернативное, чтобы получить все результаты, которые не содержат конкретных слов. – Majkson

+0

Возможно, вам следует обновить свой вопрос, а затем не читать: «Мне нужно [...] Что-то вроде не в», но чтобы рассказать нам более конкретную информацию о том, что вы ищете. –

ответ

1

Вы можете просто использовать NOT отрицания условия:

SELECT * FROM `table` WHERE NOT MATCH (`row`) AGAINST ('+word1 +word2' IN BOOLEAN MODE) 

Условие MATCH является верно на строках, где он находит слова, и ложные, где он не находит слов. Использование NOT отменяет истинный/ложный результат в каждой строке.

Так же, как:

SELECT * FROM `table` WHERE NOT row = 'abc123' 

будет справедливо для всех строк, которые не конкретное значение 'abc123'.

+0

«НЕ МАТЧА» - это он. Благодаря ! – Majkson

Смежные вопросы