我想从 courses_taken
和 quiz_attempts
表中计算 user_id,但我的查询给我带来了错误的数字。
SELECT
u.id,
u.email,
u.user,
u.joined,
MAX(qa.last_attempt_time) as last_attempt_time,
COUNT(qa.user_id) total_quiz,
COUNT(ct.user_id) total_courses
FROM users u
LEFT JOIN courses_taken ct
ON u.id = ct.user_id
LEFT JOIN quiz_attempt qa
ON u.id = qa.user_id AND qa.attempt_mode=1
GROUP BY u.id
ORDER BY total_courses DESC
表结构
用户
表
id, email, user, joined
quiz_attempt
表
id、user_id、last_attempt_time、attempt_mode 等
courses_taken
表
id,user_id,course_id,taken_on 等
在这里,我试图让所有用户了解他们的测验尝试总数和参加的类(class)总数。但是我的查询为测验尝试和所修类(class)返回了相同的数字。
最佳答案
您可以做的是在一个列上使用 COUNT DISTINCT
,该列随您尝试计算的值而变化,即:
...
COUNT(DISTINCT qa.id) total_quiz,
COUNT(DISTINCT ct.course_id) total_courses
...
关于mysql - 在一个查询中计算 mysql 中按 user_id 分组的多个表的不同总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339812/