带有前导通配符的“NOT IN”子查询

时间:2014-05-12 17:43:18

标签: sql postgresql subquery wildcard

我有两张桌子:

tablefoo包含一列fulldata 表格tablebar包含一列partialdata

我想找到tablefoo.fulldata中没有部分匹配的tablebar.partialdata列表。

以下是tablefoo.fulldatatablebar部分匹配的列表,但我希望对此有所了解。

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);

知道如何只获取不包含与前导通配符tablefoo.fulldata匹配的结果tablebar.partialdata吗?

我发现了这个链接:PostgreSQL 'NOT IN' and subquery这似乎正朝着正确的道路前进,但我没有让它与通配符一起工作。

当然,我可以编写一个脚本来将其从psql中删除并进行比较,但在查询中将这一切处理起来会更好。

1 个答案:

答案 0 :(得分:0)

SELECT fulldata
FROM   tablefoo f
WHERE  NOT EXISTS (
   SELECT 1
   FROM   tablebar b
   WHERE  f.fulldata LIKE ('%' || b.partialdata)
   );