You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中获取所有行均符合条件的唯一ID?

解决查询全满足条件唯一ID的SQL问题

你的原SQL语句存在逻辑错误,导致无法返回结果:count(columnB = false)的写法不对——columnB = false会返回布尔值,而count函数会统计所有非空的布尔值(不管结果是true还是false),所以只要该ID下有数据行,这个count值就大于0,=0的条件永远不成立,自然查不到任何结果。

以下是几种可行的正确写法:

  • 方法一:用SUM统计false的数量
    通过case语句将false转换为1、true转换为0,求和后等于0即表示没有false行:

    select 
      columnA
    from
      table
    group by
      columnA
    having
      sum(case when columnB = false then 1 else 0 end) = 0
    
  • 方法二:用MAX判断是否存在false
    如果存在false则MAX返回1,否则返回0,等于0即符合条件:

    select 
      columnA
    from
      table
    group by
      columnA
    having
      max(case when columnB = false then 1 else 0 end) = 0
    
  • 方法三:排除法(适合大表优化)
    先查出所有包含false的ID,再排除这些ID,剩下的就是全为true的ID:

    select distinct columnA
    from table
    where columnA not in (
      select columnA
      from table
      where columnB = false
    )
    
  • 方法四:利用数据库特定聚合函数(如PostgreSQL)
    部分数据库支持bool_or这类聚合函数,直接判断是否存在false,取反即可:

    select 
      columnA
    from
      table
    group by
      columnA
    having
      not bool_or(columnB = false)
    

内容的提问来源于stack exchange,提问作者gmfrk8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:35:27