gpt4 book ai didi

php - 跳过别名中的某些号码

转载 作者:行者123 更新时间:2023-11-29 18:58:16 25 4
gpt4 key购买 nike

我有一个查询,该查询采用包含 votes 的表列并将其排名为 1、2、3,依此类推。我想将排名限制为前 3 项,但是当我使用 HAVING 时,如果我使用 HAVING rank <= 6 ,它似乎会跳过偶数,甚至跳到下一个数字。 .

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 库 (5.1.73) 比当前运行的服务器 (5.6.35) 旧得多,但我不确定。我在使用类似查询时遇到了上一个问题的问题。

最佳答案

您可以将HAVINGGROUP BY 一起使用。在这种情况下,您需要使用不带 HAVING 的子查询。

SELECT *
FROM ( SELECT <your query> ORDER BY `votes` DESC) as T
WHERE rank <= 3

关于php - 跳过别名中的某些号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com