0
votes
列を含むテーブルをとり、1位、2位、3位などとランク付けするこのクエリがあります。私はを使用すると、偶数にスキップするか、HAVING rank <= 6
を使用する場合は次の番号にバンプするように見えますが、上位3項目までランクを制限したいと思います。エイリアスから特定の番号をスキップしています
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
それが現在実行しているサーバーよりもはるかに古いMySQLライブラリ(5.1.73)を使用していますように、それは(5.6.35)当社のサーバーのPHPのインストールに問題がある可能性がありますが、私はわかりません。同様のクエリを使用して以前の質問に問題がありました。
「LIMIT 3」 – mxr7350