sql >> Databasteknik >  >> RDS >> Mysql

hur man väljer slumpmässiga unika poster för varje körning av SQL-frågan

Eftersom du kan skicka en fröparameter till RAND() funktion kan du "paginera" de slumpmässiga resultaten genom att generera ett frö före den första sidan.

Exempelkod:För första sidan (varierar beroende på språk):

int seed = Math.abs(new Random().nextInt());

SQL-fråga:

SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;

Lagra fröet någonstans (för webbaserade applikationer kan du använda en url-parameter eller session). För nästa sidor:

SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;

Obs:Sortering efter RAND() är en tung operation kan det vara bättre att lagra en indexerad kolumn med webbadressens hash-kod och sedan använda en modulbaserad eller andra slumpmässiga funktioner.



  1. Befolkar trädobjekt med rekordgrupp i Oracle-formulär

  2. PDO var rader som påverkades under exekveringssatsen

  3. Kan inte ansluta till MySQL på Mac -- saknar filen mysql.sock

  4. Generera dynamiskt kolumner för korstabell i PostgreSQL