sql >> Database >  >> RDS >> MariaDB

Retourneer willekeurige rijen van een tabel in MariaDB

Hier is een snelle manier om willekeurige rijen uit een tabel in MariaDB te retourneren.

Stel dat we een tabel hebben met de naam Pets met de volgende gegevens:

SELECT  
    PetId,
    PetName
FROM Pets;

Resultaat:

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

We kunnen de RAND() . gebruiken functie in combinatie met een ORDER BY clausule en de LIMIT trefwoord om willekeurige rijen uit die tabel te retourneren.

Voorbeeld:

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

Voorbeeld resultaat:

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

En als ik het opnieuw doe, krijg ik dit:

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

En zo verder...

Houd er rekening mee dat dit behoorlijk intensief is en niet op grotere tafels mag worden gebruikt.

Bij gebruik van deze techniek leest MariaDB alle rijen in de tabel, genereert een willekeurige waarde voor elk van hen, ordent ze en past ten slotte de LIMIT toe clausule. Dit zal resulteren in een zeer trage zoekopdracht op grote tabellen.

Zie Data Sampling:technieken voor het efficiënt vinden van een willekeurige rij op de MariaDB-website voor technieken die meer geschikt zijn voor grotere tabellen.


  1. MariaDB JSON_DEPTH() uitgelegd

  2. Verward over UPDLOCK, HOLDLOCK

  3. Java JDBC - Verbinding maken met Oracle via tnsnames.ora

  4. Hoe sluit ik weekenddagen uit in een SQL Server-query?