sql >> Databáze >  >> RDS >> MariaDB

Vraťte náhodné řádky z tabulky v MariaDB

Zde je rychlý způsob, jak vrátit náhodné řádky z tabulky v MariaDB.

Předpokládejme, že máme tabulku s názvem Pets s následujícími údaji:

SELECT  
    PetId,
    PetName
FROM Pets;

Výsledek:

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

Můžeme použít RAND() funkce ve spojení s ORDER BY klauzule a LIMIT klíčové slovo vrátit náhodné řádky z této tabulky.

Příklad:

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

Příklad výsledku:

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

A když to spustím znovu, dostanu toto:

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

A tak dále…

Mějte na paměti, že je to poměrně intenzivní a nemělo by se používat na větších stolech.

Při použití této techniky MariaDB načte všechny řádky v tabulce, vygeneruje pro každý z nich náhodnou hodnotu, seřadí je a nakonec použije LIMIT doložka. Výsledkem bude velmi pomalý dotaz na velké tabulky.

Viz Vzorkování dat:Techniky pro efektivní hledání náhodného řádku na webu MariaDB, kde najdete techniky vhodnější pro větší tabulky.


  1. MySQL ekvivalent funkce DECODE v Oracle

  2. Jak připojit aplikaci pro Android k databázi MySQL?

  3. Zálohy databáze – porovnání MariaDB Mariabackup a Percona Xtrabackup

  4. Odkazuje na proměnné relace (\set var='value') z PL/PGSQL