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

标签 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

请帮帮我。

最佳答案

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

关于MySQL - Where IN 查询中的匹配和不匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54253424/

相关文章:

javascript - 使用 Threejs 将彩色线条加载到浏览器中

sql - OrientDB:如何使用选择查询更新列

python - 如何在不编写 SQL 的情况下在 python 中使用 SQL 数据库?

sql - 如何在 Sequelize 中实现 `join on and`?

mysql - 将多边形插入mysql返回null

php - Doctrine 命名策略不映射默认值

python - OS X El Capitan 上的 MySQLdb 错误

mysql - 获取每个月&年的第一个日期和对应的值

mysql - 如何在MySQL中找到创建 View 的SQL语句?

sql - 具有日期窗口保存时间的 MAX 解析函数