Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Round-Robin-Auswahl

Wenn ich richtig verstehe, was Sie mit Round-Robin meinen, dann können Sie etwas in der Art von

tun
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;

Speichern Sie (in Sitzung, Datei, einer anderen Tabelle usw.) und übergeben Sie die zuletzt angezeigte id an Ihre Abfrage oder 0 für die anfängliche Abfrage.

Dadurch erhalten Sie die nächste Zeile oder wieder die erste, wenn Sie die letzte erreicht haben. Diese Abfrage funktioniert immer noch, wenn Sie Lücken in id haben s.

Hier ist ein SQLFiddle Demo