Тъй като SELECT е атомна операция, не мисля, че има лесно решение. Също така виждам два различни проблема, които трябва да бъдат решени:
избиране на един ред, без да се повтаря показан. По принцип трябва да съхраните последния показан ред някъде. Ако имате някакво приложение, което съхранява текущото състояние, може да е опция да го запишете като външна променлива. Скицираното решение е направено в MySQL 5.0+:
Първо подгответе оператор, който ще бъде изпълнен по-късно и задайте начална позиция за заявката:
PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;
Може да искате да добавите подреждане по подразбиране, за да получите надежден резултат. Всеки път, когато искате да получите един ред, изпълнявайте оператора от
EXECUTE STMT USING @pos;
SELECT count(*) FROM customer INTO @max;
SET @pos=(@pos+1)%@max;
Другото нещо е, че искате да прочетете произволна позиция. Единственото решение, което виждам в момента, е да се създаде временна таблица, която или да съдържа съдържанието от клиента, подредено на случаен принцип, или да създадете временна таблица, съдържаща всички числа от 0[email protected] и прочетете текущата позиция в основната таблица от временната таблица. Ако имате приложение извън MySQL, може да има по-елегантни начини за решаване на това.