Поиск нескольких значений ключевых слов в строке - PullRequest
1 голос
/ 02 марта 2020

У меня есть имя таблицы keywordsTable, из которого мне нужно выбрать ключевые слова, и мне нужно найти количество, сколько раз они упоминались в другой таблице с именем dataTable.

Вот некоторые фиктивные данные keywordsTable:

id  userId  context             keywords
-----------------------------------------
1   admin   Hair Products       Shampoo
2   admin   Hair Products       Hair Conditionar
3   admin   Agriculture         Wheat
4   admin   Hair Products       Minoxidil

А вот некоторые фиктивные данные dataTable

id     data
------------
1      No matter the event, Sunsilk Black Shine Shampoo with Amla Pearls helps your hair shine upto 24 hrs. So even in heat and sweat it gives your hair upto 24 hrs shine!
2      Choose Head & Shoulders and dandruff will never be a problem again
3      Amazing hair recovery with minoxidil
4      Expansion of agriculture is reducing forest areas

Вот что я пробовал до сих пор .

drop table if exists #searchKeywords

select keywords
into #searchKeywords
from keywordTable
where context = 'Hair Products' and userId= 'admin'

select *
from #searchKeywords

select count(*)
from dataTable
where data like ((Select '%'+keywords+'%' from #searchKeywords))

Но я получаю эту ошибку:

Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.

1 Ответ

3 голосов
/ 02 марта 2020

Оператор like работает не так, как вы пытаетесь его использовать. Вместо этого попробуйте join например

select count(*)
from dataTable T
inner join #searchKeywords K on T.[data] like '%' + K.keywords + '%'
...