Här är ett snabbt sätt att returnera slumpmässiga rader från en tabell i MariaDB.
Anta att vi har en tabell som heter Pets
med följande data:
SELECT
PetId,
PetName
FROM Pets;
Resultat:
+-------+---------+ | PetId | PetName | +-------+---------+ | 1 | Fluffy | | 2 | Fetch | | 3 | Scratch | | 4 | Wag | | 5 | Tweet | | 6 | Fluffy | | 7 | Bark | | 8 | Meow | +-------+---------+
Vi kan använda RAND()
funktion i kombination med en ORDER BY
satsen och LIMIT
nyckelord för att returnera slumpmässiga rader från den tabellen.
Exempel:
SELECT
PetId,
PetName
FROM Pets
ORDER BY RAND()
LIMIT 5;
Exempelresultat:
+-------+---------+ | PetId | PetName | +-------+---------+ | 5 | Tweet | | 7 | Bark | | 1 | Fluffy | | 8 | Meow | | 3 | Scratch | +-------+---------+
Och om jag kör det igen får jag det här:
+-------+---------+ | PetId | PetName | +-------+---------+ | 3 | Scratch | | 8 | Meow | | 4 | Wag | | 7 | Bark | | 6 | Fluffy | +-------+---------+
Och så vidare...
Tänk på att detta är ganska intensivt och bör inte användas på större bord.
När du använder den här tekniken läser MariaDB alla rader i tabellen, genererar ett slumpmässigt värde för var och en av dem, ordnar dem och tillämpar slutligen LIMIT
klausul. Detta kommer att resultera i en mycket långsam fråga på stora tabeller.
Se Datasampling:Techniques for Efficiently Finding a Random Row på MariaDB-webbplatsen för tekniker som är mer lämpade för större tabeller.