logo

SQL POŘADÍ NÁHODNĚ

Pokud chcete, aby výsledný záznam byl objednané náhodně , měli byste použít následující kódy podle několika databází.

Zde je otázka: jaká je potřeba načíst náhodný záznam nebo řádek z databáze?

Někdy můžete chtít zobrazit náhodné informace jako články, odkazy, stránky atd. svému uživateli.

Pokud chcete načíst náhodné řádky z některé z databází, musíte použít některé změněné dotazy podle databází.

    Vyberte náhodný řádek pomocí MySQL:

Pokud chcete vrátit náhodný řádek s MY SQL, použijte následující syntaxi:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Vyberte náhodný řádek pomocí Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Vyberte náhodný řádek s SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Vyberte náhodný řádek s oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Vyberte náhodný řádek s IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Abychom tomuto konceptu porozuměli prakticky, podívejme se na několik příkladů s použitím databáze MySQL. Uvažujme, že máme v databázi vytvořené položky tabulky s následujícími údaji:

Tabulka: položky

ID Název položky Položka_množství Cena položky Datum nákupu
1 Mýdlo 5 200 2021-07-08
2 Zubní pasta 2 80 2021-07-10
3 Pero 10 padesáti 2021-07-12
4 Láhev 1 250 2021-07-13
5 Štětec 3 90 2021-07-15

Předpokládejme, že chceme získat libovolný náhodný záznam z tabulky položek.

Dotaz napíšeme následovně:

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Můžeme získat následující výsledky:

ID Název položky Položka_množství Cena položky Datum nákupu
3 Pero 10 dvacet 2021-07-12

Nyní zkusme provést stejný dotaz ještě jednou.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Můžeme získat následující výsledky:

ID Název položky Položka_množství Cena položky Datum nákupu
5 Štětec 3 90 2021-07-15

Z výše uvedených výsledků můžeme usoudit, že v obou případech dostáváme jako výstup různé záznamy, i když jsme stejný dotaz provedli dvakrát. Funkce RAND () vybrala náhodné záznamy pro stejný dotaz z jedné tabulky. Proto i když provedeme stejný dotaz znovu, pokaždé dostaneme jiný výstup. Existuje vzácná možnost získání stejného záznamu po sobě pomocí funkce RAND ().

Nyní předpokládejme, že chcete, aby byly všechny záznamy v tabulce načteny náhodně.

K tomu musíme provést následující dotaz:

 mysql> SELECT * FROM items ORDER BY RAND (); 

Můžeme získat následující výsledky:

ID Název položky Položka_množství Cena položky Datum nákupu
4 Láhev 1 250 2021-07-13
5 Štětec 3 90 2021-07-15
1 Mýdlo 5 200 2021-07-08
2 Zubní pasta 2 80 2021-07-10
3 Pero 10 padesáti 2021-07-12

Existuje také možnost získat různá uspořádání záznamů, pokud znovu spustíme funkci RAND () na stole zaměstnanců.