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

如何从含重复布尔值的MySQL表中按学生分组统计通过状态

跨行判断学生考试通过状态的MySQL实现

原始数据表

NameSubjectExamTypePassed
Bryan科学理论True
Bryan科学实践False
Joe科学理论True
Joe科学实践True
Jill科学理论False
Jill科学实践False
Jack科学理论False
Jack科学实践True

期望结果表

NamePassed
BryanTrue
JoeTrue
JillFalse
JackTrue

解决方案

你可以通过分组聚合实现需求,核心是按学生姓名分组后,判断组内是否存在至少一次通过记录:

方法一(适用于Passed为布尔类型)

MySQL中布尔值True等价于1,False等价于0,直接用MAX()聚合函数就能得到结果:

SELECT Name, 
       MAX(Passed) AS Passed
FROM your_table_name
GROUP BY Name;
  • GROUP BY Name:将同一学生的所有考试记录合并为一组
  • MAX(Passed):取组内Passed的最大值——只要有一次考试通过,结果就是True,全部未通过则为False

方法二(适用于Passed为字符串类型)

如果Passed存储的是'True'/'False'字符串,用CASE语句配合聚合判断:

SELECT Name,
       CASE 
           WHEN SUM(CASE WHEN Passed = 'True' THEN 1 ELSE 0 END) > 0 
           THEN 'True' 
           ELSE 'False' 
       END AS Passed
FROM your_table_name
GROUP BY Name;
  • 内层CASE将'True'转为1,'False'转为0
  • SUM()统计该学生通过的考试次数,大于0则标记为'True',否则为'False'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:18:25