如何查询给定字符串列表中不在数据库表中的字符串
查询给定列表中不在数据库表内的字符串
要实现这个需求,核心思路是先把你给定的字符串列表转换成临时数据集,再和目标表做对比,筛选出列表里存在但表中没有的内容。下面提供两种常用的实现方式:
方法一:使用LEFT JOIN筛选
通过VALUES构造包含目标列表的临时表,再和public.person表左连接,最终筛选出表中匹配不到的记录:
SELECT names.name FROM ( VALUES ('John'), ('Doe'), ('Mike') ) AS names(name) LEFT JOIN public.person p ON p.person_name = names.name WHERE p.person_name IS NULL;
方法二:使用NOT EXISTS子查询
同样先构造临时列表,再通过NOT EXISTS判断列表中的值是否不存在于public.person表中:
SELECT name FROM ( VALUES ('John'), ('Doe'), ('Mike') ) AS names(name) WHERE NOT EXISTS ( SELECT 1 FROM public.person p WHERE p.person_name = names.name );
这两种方法都能返回你需要的'Doe',可以根据习惯选择使用。
内容的提问来源于stack exchange,提问作者john johny
相关产品推荐
相关产品推荐

