[英]MySQL query with COUNT() to return records where field equals COUNT value
我有下面的查询工作正常:
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
在表队列中,有一个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子句中,而不能在where子句中。
顺便说一句,您可以使用别名。
而且我认为您不能GROUP BY asc,您当然是指GROUP BY然后是ORDER BY ... ASC
select *, count(*) as cnt from attendance
-- etc.
where
--etc.
having cnt = cohort.attendance_pass
GROUP BY attendance.person_id
ORDER 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.