仅当没有具有满足条件的值的行时才为列选择值

Posted

技术标签:

【中文标题】仅当没有具有满足条件的值的行时才为列选择值【英文标题】:Select values for a column only if there are no rows with that value that satisfy a condition 【发布时间】:2021-08-02 00:01:15 【问题描述】:

我有一个存储 http 获取日志的表,假设我们有两列:fetch_urlsuccess。几个示例行:

success   fetch_url
TRUE      A
FALSE     A
FALSE     B
FALSE     B
FALSE     C

如您所见,A 至少有一次提取成功,但BC 没有一次提取成功。如何编写一个只选择那些从未成功的获取 url 的查询?即:

fetch_url
B
C

我正在尝试使用 GROUP BYCOUNTHAVING 的某种组合,但我无法获得正确的查询。

【问题讨论】:

【参考方案1】:

你可以使用聚合:

select fetch_url
from t
group by fetch_url
having sum(case when sucess = 'TRUE' then 1 else 0 end) = 0;

【讨论】:

以上是关于仅当没有具有满足条件的值的行时才为列选择值的主要内容,如果未能解决你的问题,请参考以下文章