logo

SQL ORDER BY NAKLJUČNO

Če želite, da je nastali zapis naključno naročeno , morate uporabiti naslednje kode glede na več baz podatkov.

Tukaj je vprašanje: kakšna je potreba po pridobivanju naključnega zapisa ali vrstice iz baze podatkov?

Včasih boste morda želeli prikazati naključne informacije, npr članki, povezave, strani , itd., vašemu uporabniku.

Če želite pridobiti naključne vrstice iz katere koli baze podatkov, morate uporabiti nekaj spremenjenih poizvedb glede na bazo podatkov.

    Izberite naključno vrstico z MySQL:

Če želite vrniti naključno vrstico z MY SQL, uporabite naslednjo sintakso:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Izberite naključno vrstico s Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Izberite naključno vrstico s strežnikom SQL:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Izberite naključno vrstico z Oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Izberite naključno vrstico z IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Da bi razumeli ta koncept v praksi, si oglejmo nekaj primerov uporabe baze podatkov MySQL. Recimo, da imamo v bazi podatkov ustvarjeno tabelo z naslednjimi podatki:

Tabela: predmeti

ID Ime izdelka Artikel_Količina Item_Price Datum nakupa
1 Milo 5 200 2021-07-08
2 Zobna pasta 2 80 2021-07-10
3 Pero 10 petdeset 2021-07-12
4 Steklenička 1 250 2021-07-13
5 Čopič 3 90 2021-07-15

Recimo, da želimo pridobiti kateri koli naključni zapis iz tabele elementov.

Poizvedbo bomo napisali na naslednji način:

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

Lahko dobimo naslednje rezultate:

ID Ime izdelka Artikel_Količina Item_Price Datum nakupa
3 Pero 10 dvajset 2021-07-12

Zdaj pa poskusimo še enkrat izvesti isto poizvedbo.

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

Lahko dobimo naslednje rezultate:

ID Ime izdelka Artikel_Količina Item_Price Datum nakupa
5 Čopič 3 90 2021-07-15

Iz zgornjih rezultatov lahko sklepamo, da obakrat dobimo različne zapise kot izhod, čeprav smo dvakrat izvedli isto poizvedbo. Funkcija RAND () je obakrat izbrala naključne zapise za isto poizvedbo iz ene tabele. Torej, tudi če znova izvedemo isto poizvedbo, bomo vsakič dobili drugačen rezultat. Obstaja redka možnost zaporednega pridobivanja istega zapisa s funkcijo RAND ().

Recimo, da želite, da se vsi zapisi tabele pridobijo naključno.

java znak v int

Za to moramo izvesti naslednjo poizvedbo:

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

Lahko dobimo naslednje rezultate:

ID Ime izdelka Artikel_Količina Item_Price Datum nakupa
4 Steklenička 1 250 2021-07-13
5 Čopič 3 90 2021-07-15
1 Milo 5 200 2021-07-08
2 Zobna pasta 2 80 2021-07-10
3 Pero 10 petdeset 2021-07-12

Obstaja tudi možnost, da dobimo nekaj drugačnih ureditev zapisov, če znova izvedemo funkcijo RAND () na tabeli zaposlenih.