You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL实现多选题需全选对才计分的测验得分查询方案

多选题全对才算分的统计查询方案

核心校验逻辑

要判定一道多选题用户回答正确,必须同时满足两个条件:

  • 用户选中的所有选项均为正确选项(没有选到错误选项)
  • 用户选中的正确选项数量等于该题设置的总正确选项数量(没有漏选正确选项)

正确查询语句

以下是统计user_id=1的用户在quiz_id=1的测验中答对题数的SQL:

SELECT COUNT(DISTINCT qq.id) AS correct_count
FROM quiz_question qq
WHERE qq.quiz_id = 1
-- 校验用户没有选择错误选项
AND EXISTS (
    SELECT 1
    FROM user_quiz_answers uqa
    LEFT JOIN quiz_answer qa ON uqa.answer = qa.id
    WHERE uqa.user_id = 1 AND uqa.question_id = qq.id
    HAVING SUM(IF(qa.is_correct = 0, 1, 0)) = 0
)
-- 校验用户选全了所有正确选项
AND EXISTS (
    SELECT 1
    FROM (
        SELECT COUNT(*) AS total_right FROM quiz_answer WHERE question_id = qq.id AND is_correct = 1
    ) t
    JOIN (
        SELECT COUNT(*) AS user_right 
        FROM user_quiz_answers uqa
        JOIN quiz_answer qa ON uqa.answer = qa.id
        WHERE uqa.user_id = 1 AND uqa.question_id = qq.id AND qa.is_correct = 1
    ) u ON t.total_right = u.user_right
);

结果说明

你提供的测试数据中,ID为1的题目总共有2个正确选项,用户仅选中1个,不满足全选要求,上述查询返回结果为0,符合预期规则。
如果需要同时查询总题数、得分率等信息,调整聚合逻辑即可实现。

内容的提问来源于stack exchange,提问作者Jersh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 19:15:00