MySQL найти строки, которые не содержат ключевых слов из таблицы поиска - PullRequest
1 голос
/ 14 марта 2020

Я могу отклонить строки в запросе, где элемент отсутствует в таблице поиска, если точное совпадение :

select * from mytable where (item not in (select keyword from lookup_table))

Но теперь мне нужно отклонить строки, если item содержит любое из ключевых слов в таблице поиска

Псевдокод:

select *
from mytable
as long as any part of the item field does not contain any keyword from the lookup table

keywords in lookup table: 'something', 'test', 'something else'

item: 'this is a test' would be rejected since it contains 'test'

item: 'this is something else' would be rejected since it contains 'something'
(it would also have been rejected since it contains 'something else')

item: 'this is OK' would be included in the select since it contains none of the keywords

Спасибо!

1 Ответ

2 голосов
/ 14 марта 2020

Я бы использовал not exists:

select t.*
from mytable t
where not exists (
    select 1 
    from lookup_table l
    where t.item like concat ('%', l.keyword, '%')
)
...