我解決了一個問題並且遇到了另一個問題。基本我想選擇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剛剛發表評論,該查詢並不完全正確。你能添加一些樣本值和期望的結果嗎? –