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

如何使用SQL对比同表同列多行数据并返回单个判断结果

单表同列多行值校验SQL实现

核心思路

遍历work表的status列,只要存在任意一行值不等于Accepted就返回0,所有行全为Accepted才返回1,最终输出单行单列表格。

通用兼容写法(支持MySQL、PostgreSQL、SQL Server、Oracle等所有主流数据库)

SELECT CASE
         WHEN COUNT(CASE WHEN status != 'Accepted' THEN 1 END) = 0 THEN 1
         ELSE 0
       END AS status
FROM work;

逻辑说明

  • 内层CASE语句只会给非Accepted的行返回1,符合要求的行返回NULL,COUNT统计时会自动跳过NULL,最终统计的就是值不符合要求的总行数
  • 外层CASE根据统计结果返回对应值:不符合的行数为0返回1,否则返回0
  • 用提供的示例数据(两行值分别为Accepted、Declined)执行,会统计到1条不符合要求的记录,最终返回status=0,完全匹配预期。

部分数据库简化写法

  • MySQL可直接用SUM+IF简化:
SELECT IF(SUM(status != 'Accepted') = 0, 1, 0) AS status FROM work;
  • PostgreSQL可直接用布尔聚合函数:
SELECT BOOL_AND(status = 'Accepted')::INT AS status FROM work;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:39:18