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

jak vybrat náhodné jedinečné záznamy při každém spuštění dotazu SQL

Protože parametr seed můžete předat do RAND() můžete "stránkovat" náhodné výsledky vygenerováním semene před první stránkou.

Ukázkový kód:Pro první stránku (liší se podle jazyka):

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

SQL dotaz:

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

Seed někde uložte (pro webové aplikace můžete použít parametr url nebo relaci). Pro další stránky:

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

Poznámka:Řazení podle RAND() je náročná operace, možná bude lepší uložit indexovaný sloupec s hash kódem adresy URL a poté použít modulové nebo jiné náhodné funkce.



  1. Získejte hodnotu pole pomocí kurzoru

  2. Jak najít formát data používaný v aktuální relaci v SQL Server (T-SQL)

  3. Jak vybrat z názvu dynamické tabulky

  4. Vkládání dat SQL Serveru do Salesforce pomocí kurzoru