0
我有这个查询需要一个包含votes
列的表,并将它们排列为第1,2,3等。我想将排名限制在前三项,但是当我使用HAVING
时,它似乎跳过偶数,或者如果我使用HAVING rank <= 6
,甚至会碰到下一个数字。HAVING从别名中跳过某些号码
SELECT `category`,
`year`,
`month`, `votes`,
@prev := @curr,
@curr := `votes`,
@rank := IF(@prev = @curr, @rank, @rank + @i) AS `rank`,
IF(@prev <> `votes`, @i:=1, @i:= @i+1) AS `counter`
FROM `photo_contest`
CROSS JOIN (SELECT @curr := null, @prev := null, @rank := 1, @i := 0) `tmp_tbl`
WHERE `category` = 'World Up Close'
AND `year` = '2017'
AND `month` = 'April'
AND `votes` > 0
HAVING `rank` <= 3
ORDER BY `votes` DESC
这可能是我们的服务器的PHP安装的问题,因为它采用了更古老的MySQL库(73年5月1日),比当前正在运行的服务器(35年6月5日),但我不知道。我遇到了使用类似查询的上一个问题。
您可以尝试使用'LIMIT 3' – mxr7350