一组值,使得没有行匹配条件

时间:2014-12-17 03:28:42

标签: sql postgresql select

我有一个包含列uuidtype的表格。我想要所有uuid' 'xxxxx',以便没有行uuid = 'xxxxx'type = 'buy'

最终结果与您在表格中使用了所有uuid相同,然后删除了与uuid匹配的所有SELECT uuid FROM table WHERE type = 'buy'。< / p>

2 个答案:

答案 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