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.
Ako želite vratiti nasumični red s MY SQL-om, koristite sljedeću sintaksu:
SELECT column FROM table ORDER BY RAND () LIMIT 1;
SELECT column FROM table ORDER BY RANDOM () LIMIT 1;
SELECT TOP 1 column FROM table ORDER BY NEWID ();
SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1;
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.