我需要根据用户输入的关键字从数据库中找到匹配和不匹配的关键字。
下面是我们存储所有已知关键字的数据库架构
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
请帮助我。
答案 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;