logo

SQL KĀRTĪBA PĒC NEJAUŠAS

Ja vēlaties, lai iegūtais ieraksts būtu pasūtīts nejauši , jums vajadzētu izmantot šādus kodus saskaņā ar vairākām datu bāzēm.

Šeit ir jautājums: kāda ir nepieciešamība iegūt nejaušu ierakstu vai rindu no datu bāzes?

10 no 50.00

Dažreiz jūs varētu vēlēties parādīt nejaušu informāciju, piemēram, raksti, saites, lapas u.c. savam lietotājam.

Ja vēlaties iegūt nejaušas rindas no jebkuras datu bāzes, jums ir jāizmanto daži mainīti vaicājumi atbilstoši datu bāzēm.

    Atlasiet nejaušu rindu ar MySQL:

Ja vēlaties atgriezt nejaušu rindu ar MANU SQL, izmantojiet šādu sintaksi:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Atlasiet nejaušu rindu ar Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Atlasiet nejaušu rindu ar SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Atlasiet nejaušu rindu ar orākulu:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Atlasiet nejaušu rindu ar IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Lai praktiski izprastu šo jēdzienu, apskatīsim dažus piemērus, izmantojot MySQL datubāzi. Apsveriet, ka datu bāzē ir izveidoti tabulas vienumi ar šādiem datiem:

Tabula: preces

ID Priekšmeta nosaukums Vienums_Daudzums Vienuma_cena Pirkuma datums
1 Ziepes 5 200 2021-07-08
2 Zobu pasta 2 80 2021-07-10
3 Pildspalva 10 piecdesmit 2021-07-12
4 Pudele 1 250 2021-07-13
5 Ota 3 90 2021-07-15

Pieņemsim, ka mēs vēlamies izgūt jebkuru nejaušu ierakstu no vienumu tabulas.

Mēs uzrakstīsim vaicājumu šādi:

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

Mēs varam iegūt šādus rezultātus:

ID Priekšmeta nosaukums Vienums_Daudzums Vienuma_cena Pirkuma datums
3 Pildspalva 10 divdesmit 2021-07-12

Tagad mēģināsim izpildīt to pašu vaicājumu vēlreiz.

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

Mēs varam iegūt šādus rezultātus:

ID Priekšmeta nosaukums Vienums_Daudzums Vienuma_cena Pirkuma datums
5 Ota 3 90 2021-07-15

No iepriekšminētajiem rezultātiem mēs varam secināt, ka abas reizes mēs iegūstam dažādus ierakstus kā izvadi, lai gan mēs divreiz izpildījām vienu un to pašu vaicājumu. Funkcija RAND () ir atlasījusi nejaušus ierakstus abas reizes vienam vaicājumam no vienas tabulas. Tāpēc, pat ja mēs vēlreiz izpildām vienu un to pašu vaicājumu, mēs katru reizi iegūsim citu izvadi. Pastāv reta iespēja iegūt vienu un to pašu ierakstu pēc kārtas, izmantojot RAND () funkciju.

Tagad pieņemsim, ka vēlaties, lai visi tabulas ieraksti tiktu ielādēti nejauši.

Lai to izdarītu, mums ir jāizpilda šāds vaicājums:

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

Mēs varam iegūt šādus rezultātus:

ID Priekšmeta nosaukums Vienums_Daudzums Vienuma_cena Pirkuma datums
4 Pudele 1 250 2021-07-13
5 Ota 3 90 2021-07-15
1 Ziepes 5 200 2021-07-08
2 Zobu pasta 2 80 2021-07-10
3 Pildspalva 10 piecdesmit 2021-07-12

Pastāv arī iespēja iegūt dažus atšķirīgus ierakstu izkārtojumus, ja darbinieku tabulā atkal izpildām RAND () funkciju.