我試圖從一個由spot_id和vote_type分組的表中得到最大的行總數,但我需要的其他字段(video_id)不在組中,所以我這就是爲什麼它會在結果集中給出錯誤的video_id。我的查詢出了什麼問題?SQL MAX與GROUP BY得到錯誤的非分組字段
查詢:
SELECT
max(total_votes) as total, spot_id, vote_type, video_id
FROM
(
SELECT
count(*) as total_votes, spot_id, video_id, vote_type
FROM
spot_video_votes
GROUP BY
spot_id, video_id, vote_type
) AS t
GROUP BY
spot_id, vote_type
子查詢的結果:
total_votes, spot_id, video_id, vote_type
'1','1','2','OWN'
'1','1','3','OWN'
'4','1','4','OWN' -- should pick this
'1','2','3','FAIL'
'2','2','3','OWN' -- this
'2','2','4','FAIL' -- and this
'1','2','4','OWN'
實際結果:
total, spot_id, video_id, vote_type
'4','1','2','OWN'
'2','2','3','FAIL'
'2','2','3','OWN'
預期結果:
total, spot_id, video_id, vote_type
'4','1','4','OWN'
'2','2','4','FAIL'
'2','2','3','OWN'
您已經選擇其中沒有添加VIDEO_ID部分分組,所以服務器可以自由選擇任何列..參考http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html – Meherzad
我看到...我知道一些隨機選擇正在進行,但不知道如何構建查詢。謝謝! –