MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Geben Sie zufällige Zeilen aus einer Tabelle in MariaDB zurück

Hier ist eine schnelle Möglichkeit, zufällige Zeilen aus einer Tabelle in MariaDB zurückzugeben.

Angenommen, wir haben eine Tabelle namens Pets mit folgenden Daten:

SELECT  
    PetId,
    PetName
FROM Pets;

Ergebnis:

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

Wir können den RAND() verwenden Funktion in Verbindung mit einem ORDER BY -Klausel und das LIMIT Schlüsselwort, um zufällige Zeilen aus dieser Tabelle zurückzugeben.

Beispiel:

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

Beispielergebnis:

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

Und wenn ich es erneut ausführe, erhalte ich Folgendes:

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

Und so weiter…

Denken Sie daran, dass dies ziemlich intensiv ist und nicht an größeren Tischen verwendet werden sollte.

Bei Verwendung dieser Technik liest MariaDB alle Zeilen in der Tabelle, generiert für jede einen zufälligen Wert, ordnet sie und wendet schließlich das LIMIT an Klausel. Dies führt zu einer sehr langsamen Abfrage großer Tabellen.

Siehe Data Sampling:Techniques for Efficiently Finding a Random Row auf der MariaDB-Website für Techniken, die besser für größere Tabellen geeignet sind.