我试图从一个由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
我看到...我知道一些随机选择正在进行,但不知道如何构建查询。谢谢! –