logo

SQL ORDENA PER ALEATORIA

Si voleu que el registre resultant sigui ordenat a l'atzar , hauríeu d'utilitzar els codis següents segons diverses bases de dades.

Aquí hi ha una pregunta: quina és la necessitat d'obtenir un registre aleatori o una fila d'una base de dades?

De vegades és possible que vulgueu mostrar informació aleatòria com articles, enllaços, pàgines , etc., al vostre usuari.

Si voleu obtenir files aleatòries d'alguna de les bases de dades, heu d'utilitzar algunes consultes alterades segons les bases de dades.

    Seleccioneu una fila aleatòria amb MySQL:

Si voleu tornar una fila aleatòria amb MY SQL, utilitzeu la sintaxi següent:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Seleccioneu una fila aleatòria amb Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Seleccioneu una fila aleatòria amb SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Seleccioneu una fila aleatòria amb oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Seleccioneu una fila aleatòria amb IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Per entendre aquest concepte de manera pràctica, vegem alguns exemples utilitzant la base de dades MySQL. Penseu que tenim elements de taula creats a la base de dades amb les dades següents:

Taula: articles

obre el menú de configuració
ID Nom de l'ítem Item_Quantity Article_Preu Data de compra
1 Sabó 5 200 2021-07-08
2 Pasta de dents 2 80 2021-07-10
3 Bolígraf 10 50 2021-07-12
4 Ampolla 1 250 2021-07-13
5 Raspall 3 90 2021-07-15

Suposem que volem recuperar qualsevol registre aleatori de la taula d'elements.

Escrivim la consulta de la següent manera:

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

Podem obtenir els següents resultats:

ID Nom de l'ítem Item_Quantity Article_Preu Data de compra
3 Bolígraf 10 20 2021-07-12

Ara provem d'executar la mateixa consulta una vegada més.

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

Podem obtenir els següents resultats:

ID Nom de l'ítem Item_Quantity Article_Preu Data de compra
5 Raspall 3 90 2021-07-15

A partir dels resultats anteriors, podem concloure que obtenim registres diferents com a sortida les dues vegades tot i que hem executat la mateixa consulta dues vegades. La funció RAND () ha seleccionat registres aleatoris ambdues vegades per a la mateixa consulta d'una única taula. Per tant, fins i tot si tornem a executar la mateixa consulta, tindrem una sortida diferent cada vegada. Hi ha una rara possibilitat d'aconseguir el mateix registre consecutivament utilitzant la funció RAND ().

Ara, suposem que voleu que tots els registres de la taula s'obtinguin aleatòriament.

Per fer-ho, hem d'executar la consulta següent:

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

Podem obtenir els següents resultats:

ID Nom de l'ítem Item_Quantity Article_Preu Data de compra
4 Ampolla 1 250 2021-07-13
5 Raspall 3 90 2021-07-15
1 Sabó 5 200 2021-07-08
2 Pasta de dents 2 80 2021-07-10
3 Bolígraf 10 50 2021-07-12

També hi ha la possibilitat d'aconseguir diferents arranjaments de registres si tornem a executar la funció RAND () a la taula d'empleats.