MySQL-Where IN查询中的匹配和不匹配结果

时间:2019-01-18 11:49:32

标签: mysql sql

我需要根据用户输入的关键字从数据库中找到匹配和不匹配的关键字。

下面是我们存储所有已知关键字的数据库架构

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 :(得分:1)

您可以在下面尝试-使用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

答案 1 :(得分:0)

选择三个关键字,然后使用子查询在关键字表中查找它们:

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;