我解决了一个问题并且遇到了另一个问题。基本我想选择question_id,答案和最大发生次数。我从基本表运行我的查询,收集问题和答案(问题ID表示问题和答案表示答案从0到5对应于其他表,但无所谓)。选择最大值时的id和值
**survey_result**
question_id
answer (int from 0 to 5)
样品survey_result:
question_id answer
1 3
1 5
1 2
2 2
2 0
2 4
这里的查询,它的目的是检查每一个问题,它的答案(0-5)发生最多。
select question_id, answer, max(occurence_number) FROM
(select question_id, answer, count(*) as occurence_number
from survey_result
group by question_id, answer
order by question_id asc, occurence_number desc) as results
GROUP BY question_id
所以一个子查询结果是这样的:
question_id answer occurence_number
1 0 12
1 1 20
1 2 34
1 3 5
1 4 9
1 5 15
但主要的查询结果是这样的:
question_id answer occurence_number
1 0 12
2 0 20
3 0 34
4 0 5
所以问题是,它总是显示答案0,我想要得到正确的答案号码。
发生这种情况是因为MySQL(与其他RDBMS不同)允许您将列放置在“SELECT”列表中,而这些列不在“GROUP BY”中。这会产生其他列的非确定性结果。 –
你能更好地解释一下你希望得到的答案吗? –
由于@MichaelBerkowski刚刚发表评论,该查询并不完全正确。你能添加一些样本值和期望的结果吗? –