【发布时间】:2014-05-12 17:43:18
【问题描述】:
我有两张桌子:
表 tablefoo 包含一列 fulldata。
表tablebar 包含一列partialdata。
我想查找在tablebar.partialdata 中没有部分匹配的tablefoo.fulldata 列表。
下面提供了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 中提取出来并进行比较,但是将这一切作为查询的一部分来处理会更好。
【问题讨论】:
-
您的 Postgres 版本、表定义 (
\d tblin psql) 和示例数据将按顺序排列。理想情况下是一个测试用例,例如在 sqlfiddle.com 上。 -
Postgres 版本是 9.1。我将考虑向 sqlfiddle.com 添加一个示例。感谢您的建议。
标签: sql postgresql subquery wildcard