Jeśli dobrze rozumiem, co rozumiesz przez round-robin, możesz zrobić coś w stylu
SELECT id, url
FROM urls u CROSS JOIN
(
SELECT MIN(id) min_id, MAX(id) max_id
FROM urls
) m
WHERE id > IF(? >= max_id, 0, ?) -- last shown id goes here instead of placeholders
ORDER BY id
LIMIT 1;
Przechowuj (w sesji, pliku, innej tabeli itp.) i przekaż do zapytania ostatni wyświetlony id
lub 0 dla początkowego zapytania.
To da ci następny wiersz lub pierwszy ponownie, jeśli dotarłeś do ostatniego. To zapytanie będzie nadal działać, jeśli masz luki w id
s.
Oto SQLFiddle demo