如何编写条件明智的结果提供查询?
Posted
技术标签:
【中文标题】如何编写条件明智的结果提供查询?【英文标题】:How to write condition wise result providing query? 【发布时间】:2011-09-29 08:13:31 【问题描述】:您好,我想编写一个 mysql 查询,给出条件明智的结果。
例如。我有一个包含问题、答案值、用户选择值字段的表格。
用户可以参加多次回答该问题。
qid righttanz wronganz 11 4 2 11 4 4 11 4 1 25 1 1 我想像这样 qid righttanz wronganz 11 1 2 25 1 0我想显示用户对该问题提供正确和错误答案的次数? 我怎样才能为此编写一个mysql查询?有没有人可以帮助我?
【问题讨论】:
如果您能提供表格架构以及这些列在表格中的设置方式,将会非常有帮助。 【参考方案1】:SELECT SUM(IF(answer = 42, 1, 0)) AS correct_count, count(*) as total_count
FROM answers
WHERE user_id = 13
假设你要检查的user_id
是13,正确答案是42
【讨论】:
这里有个提示:SUM(IF(answer = 42, 1, 0))
更优雅地表达为SUM(answer = 42)
【参考方案2】:
所有问题
SELECT a.userId, q.qid
,SUM( CASE WHEN q.answer = a.answer THEN 1 ELSE 0 END) AS correct_answers
,SUM( CASE WHEN q.answer = a.answer THEN 0 ELSE 1 END) AS wrong_answers
FROM questions q
JOIN answers a ON q.qid = a.qid
GROUP BY a.userId, q.qid
针对特定问题
SELECT a.userId
,SUM( CASE WHEN q.answer = a.answer THEN 1 ELSE 0 END) AS correct_answers
,SUM( CASE WHEN q.answer = a.answer THEN 0 ELSE 1 END) AS wrong_answers
FROM questions q
JOIN answers a ON q.qid = a.qid
WHERE q.qid = <question_id>
GROUP BY a.userId
【讨论】:
以上是关于如何编写条件明智的结果提供查询?的主要内容,如果未能解决你的问题,请参考以下文章