我不确定这是否适用于单个mysql语句,但这正是我想要实现的目标:
我们正在 tbl_results 中为可变数量的在线报价存储用户的答案。每个在线测验都有不同数量的问题。每个问题都有可变数量的答案,其中只有一个是正确的。
这是我们的 tbl_results ,其中包含一些示例条目
id | quiz_id | user_id | question_id | answer_id | correct
1 2 3 1 1 0
2 2 3 2 2 1
3 2 3 3 3 1
4 2 4 1 1 1
5 2 4 2 2 1
6 2 4 3 3 1
7 2 5 1 1 1
8 2 5 2 2 1
9 2 5 3 3 1
10 2 6 1 1 1
11 2 6 2 2 1
$number_of_questions
告诉我们为了赢得目前有关的测验,必须正确回答多少问题。
我们如何在$number_of_questions = 3
时找出有多少用户赢得了第2个测验?在这种情况下,它将是user_ids
4& 5。
这是我们到目前为止所做的:
SELECT * FROM tbl_results WHERE quiz_id = 2 AND CORRECT = 1 GROUP BY user_id
我们如何调整这一点以考虑$number_of_questions
...?
非常感谢您的任何帮助!
答案 0 :(得分:1)
您可以使用HAVING子句: -
SELECT quiz_id, user_id, correct, COUNT(*) AS correct_answers
FROM tbl_results
WHERE quiz_id = 2
AND CORRECT = 1
GROUP BY quiz_id, user_id, correct
HAVING correct_answers = 3
请注意,原始查询中的GROUP BY有点可疑,并且对于不在GROUP BY子句中的列返回哪些行值是未定义的。