MariaDB
 sql >> Database >  >> RDS >> MariaDB

Restituisce righe casuali da una tabella in MariaDB

Ecco un modo rapido per restituire righe casuali da una tabella in MariaDB.

Supponiamo di avere una tabella chiamata Pets con i seguenti dati:

SELECT  
    PetId,
    PetName
FROM Pets;

Risultato:

+-------+---------+
| PetId | PetName |
+-------+---------+
|     1 | Fluffy  |
|     2 | Fetch   |
|     3 | Scratch |
|     4 | Wag     |
|     5 | Tweet   |
|     6 | Fluffy  |
|     7 | Bark    |
|     8 | Meow    |
+-------+---------+

Possiamo usare il RAND() funzione in combinazione con un ORDER BY clausola e il LIMIT parola chiave per restituire righe casuali da quella tabella.

Esempio:

SELECT  
    PetId,
    PetName
FROM Pets 
ORDER BY RAND() 
LIMIT 5;

Esempio di risultato:

+-------+---------+
| PetId | PetName |
+-------+---------+
|     5 | Tweet   |
|     7 | Bark    |
|     1 | Fluffy  |
|     8 | Meow    |
|     3 | Scratch |
+-------+---------+

E se lo eseguo di nuovo, ottengo questo:

+-------+---------+
| PetId | PetName |
+-------+---------+
|     3 | Scratch |
|     8 | Meow    |
|     4 | Wag     |
|     7 | Bark    |
|     6 | Fluffy  |
+-------+---------+

E così via...

Tieni presente che questo è piuttosto intenso e non dovrebbe essere usato su tavoli più grandi.

Quando si utilizza questa tecnica, MariaDB legge tutte le righe della tabella, genera un valore casuale per ciascuna di esse, le ordina e infine applica il LIMIT clausola. Ciò comporterà una query molto lenta su tabelle di grandi dimensioni.

Vedere Campionamento dei dati:tecniche per trovare in modo efficiente una riga casuale sul sito Web di MariaDB per le tecniche più adatte a tabelle più grandi.