Voici une approche pour obtenir le jeu de résultats renvoyé par MySQL. (Mais il pourrait être plus facile de simplement renvoyer toutes les lignes et d'obtenir une ligne sur trois dans l'application). Mais cela peut être fait dans MySQL assez facilement. Notez que votre requête d'origine est entourée de parenthèses (en tant que vue en ligne) alias r
.
SELECT r.*
FROM (
SELECT *
FROM mbr_qa_questions
ORDER BY q_votes DESC
) r
CROSS
JOIN ( SELECT @i := 0 ) s
HAVING ( @i := @i + 1) MOD 3 = 1
Cela renverra toutes les trois rangées, en commençant par la première rangée. Pour obtenir chaque troisième ligne en commençant par la 2e et la 3e ligne, remplacez le littéral = 1
dans la clause HAVING avec = 2
ou = 3
(respectivement).