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.
Si voleu tornar una fila aleatòria amb MY SQL, utilitzeu la sintaxi següent:
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;
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.