我有一个包含列uuid
和type
的表格。我想要所有uuid
' 'xxxxx'
,以便没有行uuid = 'xxxxx'
和type = 'buy'
。
最终结果与您在表格中使用了所有uuid
相同,然后删除了与uuid
匹配的所有SELECT uuid FROM table WHERE type = 'buy'
。< / p>
答案 0 :(得分:2)
我使用聚合和having
子句来解决这些问题:
select a_uuid
from table t
group by a_uuid
having sum(case when type = 'Purchase' then 1 else 0 end) = 0;
编辑:
如果您的表格每a_uuid
行一行,那么最快的可能是:
select a_uuid
from adtbs a
where not exists (select 1 from table t where t.a_uuid = a.a_uuid and t.type = 'Purchase');
对于此查询,您需要table(a_uuid, type)
上的索引。
答案 1 :(得分:1)
select a_uuid
from t
group by a_uuid
having not bool_or(type = 'Purchase')
http://www.postgresql.org/docs/current/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE