2013-07-10 3 views
1

У меня есть таблица заданий, которая имеет поле longtext с именем «keywords».Как исключить строку на основе частичного совпадения строк?

Я пытаюсь сформировать инструкцию SELECT, где я могу сопоставить некоторые ключевые слова, исключая других.

Например, мне нужен SQL для «Дайте мне все задания, в которых ключевые слова содержат слово« портреты », но исключают те задания, которые имеют слово« outdoors ».»

Спасибо! [И если необходимо изменить, или дополнительная информация необходима вопрос, просто дайте мне знать.]

ответ

6

Как насчет:

. . . WHERE keywords LIKE '%portraits%' AND keywords NOT LIKE '%outdoors%' . . . 

Лучший подход можно было бы определить отдельную таблицу ключевых слов для работы. Он будет иметь одну строку для каждой комбинации работ/ключевых слов. При правильной индексации вы можете значительно ускорить поиск заданий с или без соответствия ключевых слов.

+0

благодарит за предложение. как только я получу свои данные, вам будет интересно проверить производительность между запросами на longtext и запросы к другой таблице. другая переменная, которая может повлиять на производительность, - это способность выполнять частичные совпадения против точных совпадений (т. е. LIKE «% port%» vs = «портреты») – skippix

+0

Почему бы вам не привести пример с индексацией и против другой таблицы? –

3
SELECT * 
FROM [table_name] 
WHERE keywords like '%portraits%' 
    AND keywords not like '%outdoors%'; 
Смежные вопросы