使用 COUNT() 的 MySQL 查询返回字段等于 COUNT 值的记录

标签 mysql

我有以下查询,效果很好:

SELECT *, COUNT(*) FROM attendance, cohort 
WHERE 
attendance.cohort_fk = cohort.cohort_pk 
AND 
attendance.cohort_fk = '$cohort' 
AND 
YEAR(attendance.attended) = '$year'
GROUP BY attendance.person_id ASC

在表 cohort 中,有一个 int 列 'attendance_pass'。现在我想要另一个与上面类似的查询,它只返回 COUNT(*) FROM attendance 等于 cohort.attendance_pass 的记录。例如。

SELECT *, COUNT(*) FROM attendance, cohort 
WHERE 
attendance.cohort_fk = cohort.cohort_pk 
AND 
attendance.cohort_fk = '$cohort' 
AND 
YEAR(attendance.attended) = '$year'
AND 
COUNT() = cohort.attendance_pass
GROUP BY attendance.person_id ASC

如何修改第二个查询以仅获取这些记录?

最佳答案

你需要使用HAVING

SELECT *, COUNT(*) FROM attendance, cohort 
WHERE 
attendance.cohort_fk = cohort.cohort_pk 
AND 
attendance.cohort_fk = '$cohort' 
AND 
YEAR(attendance.attended) = '$year'

GROUP BY attendance.person_id ASC

HAVING COUNT(*) = cohort.attendance_pass

关于使用 COUNT() 的 MySQL 查询返回字段等于 COUNT 值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21671243/

相关文章:

mysql - 在 SQL 中使用特定字符串的 INNER JOIN

mysql - 从 sql 表字段填充下拉列表

mysql - 使用mysql在phpmyadmin中显示错误时间

mysql - 如何选择列中出现频率最高的 5 个值

php - 使用 CakePHP3 将文件/图像上传到数据库

mysql - 从另一个字段排序的数据库中选择不同的行

php pdo只返回一个结果集

php - 为什么 mysql_num_rows 对于空表上的 SELECT 返回 1?

mysql - MySQL CASE 是如何工作的?

mysql - 多行插入和主键重复键