MySQL - сопоставление и несовпадение результатов в запросе Where IN - PullRequest
0 голосов
/ 18 января 2019

Мне нужно найти подходящие и не соответствующие ключевые слова из базы данных по введенным пользователем ключевым словам.

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

Table keywords
   keyword varchar

Поиск подходящих ключевых слов в простом. Мы используем следующий запрос, чтобы найти подходящие ключевые слова

select keyword from keywords where keyword in ('abc', 'pqr', 'xyz')

Где «abc», «pqr», «xyz» - ключевые слова, предоставленные пользователем.

Однако мне также нужно найти ключевые слова, которых нет в базе данных. Определенно NOT IN не работает, так как он вернет все теги из базы данных, а не тот, который не был сопоставлен. Например, если «abc» и «pqr» присутствуют в базе данных, а «xyz» - нет, я ожидаю вывод в следующем виде

keyword present
abc       1
pqr       1
xyz       0

Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Выберите три ключевых слова и используйте подзапрос, чтобы найти их в таблице ключевых слов:

select
  keyword,
  keyword in (select keyword from keywords) as present
from
(
  select 'abc' as keyword
  union all
  select 'pqr' as keyword
  union all
  select 'xyz' as keyword
) user_keywords
order by keyword;
0 голосов
/ 18 января 2019

Вы можете попробовать ниже - используя cte

with cte1 as 
(
select 'abc' as key
union 
select 'pqr' union select 'xyz' 
)
select keyword,case when key is null then 0 else 1 end as is_present 
from keywords left join cte1 on keyword=key
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...