如何编写条件明智的结果提供查询?

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

【讨论】:

以上是关于如何编写条件明智的结果提供查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 grails 命名查询中编写“不存在”查询?

如何编写 hql 查询或条件查询以根据时间戳获取最新记录

如何在 SQL 中编写搜索查询

如何使用布尔条件编写 JPA 查询

如何编写没有联接的 JPA 2.1 更新条件查询?

如何在 Laravel 的 DB 查询中编写两个 where 条件?