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

如何通过SQL查询判断单列所有结果是否均为1并返回布尔值?

解决单列结果集统一判断的问题

嘿,我懂你的需求啦!你之前写的SQL语句是逐行检查每个status的值,所以会返回和结果行数一样多的true/false,但你要的是对整个结果集做统一判断——全是1就返回true,只要有一个2就返回false对吧?

这里有几个实用的解决方案,你可以根据场景选:

方法1:用MAX聚合函数判断最大值

利用MAX函数取status列的最大值:如果最大值是1,说明所有值都是1;只要有一个2,最大值就会是2。

SELECT CASE 
         WHEN MAX(status) = 1 THEN 'true' 
         ELSE 'false' 
       END AS result
FROM bd.items
WHERE items.id = 33;

方法2:统计值为2的行数

通过统计status=2的记录数,要是数量为0就说明没有2,返回true;反之返回false:

SELECT CASE 
         WHEN COUNT(CASE WHEN status = 2 THEN 1 END) = 0 THEN 'true' 
         ELSE 'false' 
       END AS result
FROM bd.items
WHERE items.id = 33;

方法3:用EXISTS(性能最优)

这个方法最适合大数据量的场景,因为它只要找到一条status=2的记录就会停止查询,不用遍历所有行:

SELECT CASE 
         WHEN EXISTS(SELECT 1 FROM bd.items WHERE id=33 AND status=2) THEN 'false' 
         ELSE 'true' 
       END AS result;

这三种方法都能完美匹配你的测试场景:

  • 结果为{1,1,1} → 返回true
  • 结果为{1,2,1} → 返回false
  • 结果为{1} → 返回true
  • 结果为{2} → 返回false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:37:39