Ето един подход, за да получите резултата, върнат от MySQL. (Но може да е по-лесно просто да върнете всички редове и да получите всеки трети ред в приложението). Но това може да се направи в MySQL доста лесно. Обърнете внимание, че оригиналната ви заявка е обвита в скоби (като вграден изглед) с псевдоним като 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
Това ще връща всеки трети ред, като се започне с първия ред. За да получите всеки трети ред, започващ с 2-ри и 3-ти ред, заменете литерала = 1
в клаузата HAVING с = 2
или = 3
(съответно).