Postgresql Query:当满足所有子记录的特定条件时,如何返回所有父记录

时间:2017-06-23 04:27:47

标签: sql postgresql

我正在使用包含字段'contacts''contact_id''account_id'的SQL表'approved'

帐户是潜在客户的公司,每个帐户有多个联系人。如果这些联系人中的任何一个被批准(符合特定标准),我们可以出售给该帐户。已经批准的' field是boolean。

我正在尝试编写一个查询,该查询将返回未经批准的联系帐户的account_ids。我尝试过使用ANYBOOL_AND以及几种类型的分组和计数但没有成功。任何建议都非常感谢。

我的表格类似于:

ACCOUNT_ID  CONTACT_ID  APPROVED
Apple       123         TRUE
Apple       321         FALSE
Pear        456         FALSE
Pear        654         FALSE
Orange      789         TRUE
Orange      987         TRUE

我希望我的查询返回

ACCOUNT_ID
Pear

因为这是所有记录都是假的唯一帐户。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用 NOT EXISTS

SELECT DISTINCT account_id 
FROM contacts a
WHERE 
    NOT EXISTS (
    SELECT 1 
    FROM contacts b
    WHERE a.account_id = b.account_id AND b.approved = TRUE)

我创建了一个演示here