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

SQL查询错误排查:统计用户匹配正确答案的答题数量

SQL语句错误分析

数据表信息

Table1

IDName
1Brie
2Ray
3James

Table2

IDQ_idQ_noans
12304.1A
12304.2A
12305.1C
22304.2A
22305.1C
32304.1A
32305.2D

Table3

Q_idQ_nocorrect_ans
2304.1A
2304.2B
2305.1C
2305.2D

需求

输出包含ID、姓名以及Table2中答案与Table3正确答案匹配的条目数的表格,预期结果:

IDNameans_count
1Brie2
2Ray1
3James2

你的SQL语句

Select t1.ID, Name, count(t2.ans) as ans_count
from Table1 t1
join Table2 t2 on t1.ID=t2.ID
join Table3 t3 on t2.Q_id=t3.Q_id
where t2.ans=t3.correct.ans and t2.q_no=t3.q_no
group by t1.ID
order by t1.ID

错误点分析

  • 字段名拼写错误:t3.correct.ans是错误写法,Table3中正确答案的字段名是correct_ans,不存在.分隔的结构,应改为t3.correct_ans。
  • 连接条件逻辑不严谨:你把t2.q_no = t3.q_no放在where子句中,应该将其移到Table3的连接条件里,这样能提前过滤不匹配的记录,避免产生不必要的临时数据,逻辑也更清晰。
  • 分组字段不完整:多数SQL方言(如MySQL 5.7+、PostgreSQL、SQL Server)要求group by子句包含所有非聚合的查询字段。你查询了t1.ID和Name,但仅分组t1.ID,若Name与t1.ID并非严格一一对应会报错,建议改为group by t1.ID, t1.Name。

修正后的SQL语句

SELECT t1.ID, t1.Name, COUNT(t2.ans) AS ans_count
FROM Table1 t1
JOIN Table2 t2 ON t1.ID = t2.ID
JOIN Table3 t3 ON t2.Q_id = t3.Q_id AND t2.Q_no = t3.Q_no
WHERE t2.ans = t3.correct_ans
GROUP BY t1.ID, t1.Name
ORDER BY t1.ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:15:44