sql >> Databáze >  >> RDS >> Mysql

MySQL Round Robin Select

Pokud správně chápu, co máte na mysli pod pojmem round-robin, můžete udělat něco ve smyslu

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;

Uložte (v relaci, souboru, jiné tabulce atd.) a předejte vašemu dotazu naposledy zobrazené id nebo 0 pro počáteční dotaz.

Tím získáte další řádek nebo znovu první, pokud jste dosáhli posledního. Tento dotaz bude stále fungovat, pokud máte mezery v id s.

Zde je SQLFiddle demo



  1. Odkazování na cizí klíče ve stejném sloupci

  2. SQL Alter Table

  3. Dynamické SQL výsledky do dočasné tabulky v SQL uložené proceduře

  4. jak ukládat akcenty nad znaky v mé databázi