【发布时间】:2013-12-10 11:02:47
【问题描述】:
我在使用 mysql 查询检索计数记录时确实遇到了麻烦。这是场景。我想获取包含未出现在 selected_students 表中的学生人数的主表(标准)行。
criteria
---------
id name
1 maths
2 medicine
3 physics
criteria_matches
------------------
id criteria_ref_id user_ref_id
1 1 153
2 1 222
3 1 699
4 2 486
5 2 38
6 3 141
selected_students
-----------------
id user_ref_id selected_by status
1 153 15 'E'
2 500 15 'E'
3 486 15 'E'
3 141 15 'E'
expected result
----------------
criteria_id criteria_name student_count
1 maths 2
2 medicine 1
3 physics 0
我尝试使用以下查询来获取具有计数但没有运气的父表行
SELECT t.id, t.name, COUNT(DISTINCT ss.user_ref_id) AS students_count FROM criteria t
LEFT JOIN criteria_matches cm ON cm.criteria_ref_id = t.id
LEFT JOIN selected_students ss ON ss.user_ref_id = cm.user_ref_id
WHERE dss.user_ref_id IS NULL
GROUP BY t.id ORDER BY t.name
【问题讨论】:
标签: mysql count null left-join