Oto jedno podejście, aby uzyskać wyniki zwrócone przez MySQL. (Ale łatwiej byłoby po prostu zwrócić wszystkie wiersze i pobrać co trzeci wiersz w aplikacji). Ale można to zrobić w MySQL całkiem łatwo. Zwróć uwagę, że oryginalne zapytanie jest opakowane w nawiasy (jako widok wbudowany) o aliasie 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
To zwróci co trzeci wiersz, zaczynając od pierwszego. Aby co trzeci wiersz zaczynał się od drugiego i trzeciego, zastąp dosłowne = 1
w klauzuli HAVING z = 2
lub = 3
(odpowiednio).