logo

SQL REDOSLIJED PO NALUČAJNOM

Ako želite da rezultirajući zapis bude poredano nasumično , trebali biste koristiti sljedeće kodove prema nekoliko baza podataka.

Evo pitanja: koja je potreba za dohvaćanjem nasumičnog zapisa ili retka iz baze podataka?

Ponekad ćete možda htjeti prikazati nasumične informacije poput članci, poveznice, stranice itd. svom korisniku.

Ako želite dohvatiti nasumične retke iz bilo koje baze podataka, morate koristiti neke izmijenjene upite prema bazama podataka.

    Odaberite nasumični red s MySQL-om:

Ako želite vratiti nasumični red s MY SQL-om, koristite sljedeću sintaksu:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Odaberite nasumični red pomoću Postgre SQL-a:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Odaberite nasumični red sa SQL Serverom:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Odaberite nasumični red s proročištem:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Odaberite nasumični red s IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Kako bismo praktično razumjeli ovaj koncept, pogledajmo neke primjere korištenja MySQL baze podataka. Zamislite da imamo tablicu stavki kreiranu u bazi podataka sa sljedećim podacima:

pvr puni oblik

Tablica: stavke

iskaznica Ime proizvoda Količina_artikla Cijena_artikla Datum kupnje
1 Sapun 5 200 2021-07-08
2 Pasta za zube 2 80 2021-07-10
3 Olovka 10 pedeset 2021-07-12
4 Boca 1 250 2021-07-13
5 Četka 3 90 2021-07-15

Pretpostavimo da želimo dohvatiti bilo koji nasumični zapis iz tablice stavki.

Upit ćemo napisati na sljedeći način:

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

Možemo dobiti sljedeće rezultate:

iskaznica Ime proizvoda Količina_artikla Cijena_artikla Datum kupnje
3 Olovka 10 dvadeset 2021-07-12

Sada pokušajmo još jednom izvršiti isti upit.

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

Možemo dobiti sljedeće rezultate:

iskaznica Ime proizvoda Količina_artikla Cijena_artikla Datum kupnje
5 Četka 3 90 2021-07-15

Iz gornjih rezultata možemo zaključiti da oba puta dobivamo različite zapise kao izlaz iako smo dvaput izvršili isti upit. Funkcija RAND () odabrala je nasumične zapise oba puta za isti upit iz jedne tablice. Stoga, čak i ako ponovo izvršimo isti upit, svaki put ćemo dobiti drugačiji izlaz. Postoji rijetka mogućnost dobivanja istog zapisa uzastopno pomoću funkcije RAND ().

Sada, pretpostavimo da želite da se svi zapisi tablice dohvate nasumično.

Da bismo to učinili, moramo izvršiti sljedeći upit:

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

Možemo dobiti sljedeće rezultate:

iskaznica Ime proizvoda Količina_artikla Cijena_artikla Datum kupnje
4 Boca 1 250 2021-07-13
5 Četka 3 90 2021-07-15
1 Sapun 5 200 2021-07-08
2 Pasta za zube 2 80 2021-07-10
3 Olovka 10 pedeset 2021-07-12

Također postoji mogućnost dobivanja drugačijeg rasporeda zapisa ako ponovno izvršimo funkciju RAND () na tablici zaposlenika.