sql >> Base de Datos >  >> RDS >> Mysql

Selección por turnos de MySQL

Si entiendo correctamente lo que quiere decir con round-robin, entonces puede hacer algo como

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;

Almacene (en sesión, archivo, otra tabla, etc.) y pase a su consulta el último id mostrado o 0 para la consulta inicial.

Esto le dará la siguiente fila o la primera nuevamente si llegó a la última. Esta consulta seguirá funcionando si tiene espacios en blanco en id s.

Aquí hay un SQLFiddle demostración