我有两个表:
表 tablefoo
包含一列 fulldata
。
表 tablebar
包含一列 partialdata
。
我想找到 tablefoo.fulldata
的列表,它在 tablebar.partialdata
中没有部分匹配。
下面提供了 tablefoo.fulldata
的列表,在 tablebar
中有部分匹配,但我想要这个的否定。
select fulldata from tablefoo
where fulldata like any (select '%' || partialdata from tablebar);
这列出了 partialdata
中的每条记录:
select fulldata from tablefoow
where partialdata not in (select '%' || partialdata from tablebar);
知道如何只获取不包含与前导通配符 tablebar.partialdata
匹配的结果 tablefoo.fulldata
吗?
我找到了这个链接:PostgreSQL 'NOT IN' and subquery这似乎是朝着正确的方向前进,但我没有让它与通配符一起工作。
当然,我可以编写一个脚本将其从 psql 中提取出来并进行比较,但将其全部作为查询的一部分进行处理会好得多。
最佳答案
SELECT fulldata
FROM tablefoo f
WHERE NOT EXISTS (
SELECT 1
FROM tablebar b
WHERE f.fulldata LIKE ('%' || b.partialdata)
);
关于sql - "NOT IN"带有前导通配符的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23615483/