Összefoglaló: ebben a bemutatóban különböző technikákat fogsz megtanulni, hogy véletlen rekordokat válassz ki egy adatbázis táblából MySQL-ben.

Néha véletlen rekordokat kell kiválasztani egy táblázatból, például:

  • Egy blogban néhány véletlen bejegyzés kiválasztása és megjelenítése az oldalsávban.
  • Véletlenszerű idézet kiválasztása a “nap idézete” widget megjelenítéséhez.
  • Véletlenszerű képek kiválasztása egy galériában és használata kiemelt képként.

MySQL véletlenszerű rekordok kiválasztása ORDER BY RAND() használatával

A MySQL-nek nincs beépített utasítása véletlenszerű sorok kiválasztására egy táblázatból. Ehhez a RAND() függvényt használja.

A következő lekérdezés véletlenszerű sort választ ki egy adatbázis-táblából:

Code language: SQL (Structured Query Language) (sql)

Vizsgáljuk meg a lekérdezést részletesebben.

  • A RAND() függvény a táblázat minden sorához véletlen értéket generál.
  • A ORDER BY záradék a RAND() függvény által generált véletlen szám alapján rendezi a táblázat összes sorát.
  • A LIMIT záradék a véletlenszerűen rendezett eredményhalmaz első sorát választja ki.

Ha N véletlenszerű rekordokat szeretne kiválasztani egy adatbázis-táblából, akkor a LIMIT záradékot a következőképpen kell módosítania:

Code language: SQL (Structured Query Language) (sql)

Nézze meg a következő customers táblázatot a mintaadatbázisból.

A következő példa öt véletlenszerű ügyfelet választ ki a customers táblából:

Code language: SQL (Structured Query Language) (sql)

Kipróbálja

Figyeljen arra, hogy a véletlenszerűség miatt eltérő eredményhalmazt kaphat.

Ez a technika nagyon jól működik egy kis táblánál. Nagy táblánál azonban lassú lesz, mert a MySQL-nek a teljes táblázatot át kell rendeznie, hogy kiválassza a véletlenszerűeket.

A lekérdezés sebessége a táblázat sorainak számától is függ. Minél több sora van a táblának, annál több időt vesz igénybe a véletlen szám generálása minden egyes sorhoz.

A MySQL INNER JOIN záradékkal választ ki véletlen rekordokat

Ez a technika megköveteli, hogy a táblának legyen automatikusan inkrementálódó elsődleges kulcsmezője, és ne legyen hézag a sorban.

A következő lekérdezés az elsődleges kulcs oszlop alapján generál egy véletlen számot:

Code language: SQL (Structured Query Language) (sql)

A táblát a fenti lekérdezés által visszaadott eredményhalmazzal a következőképpen tudjuk összekapcsolni:

Code language: SQL (Structured Query Language) (sql)

Ezt a technikát használva a lekérdezést többször kell végrehajtani, hogy egynél több véletlen sorhoz jussunk, mert ha a korlátot növeljük, a lekérdezés csak a véletlenszerűen kiválasztott sorral kezdődő sorokat fogja adni.

A következő lekérdezés egy véletlenszerű ügyfelet ad vissza a customers táblából.

Code language: SQL (Structured Query Language) (sql)

Kipróbálás

MySQL select random records using variables

Ha a táblázat id oszlopában az értékek egy 1..N tartományba esnek, és a tartományban nincs rés, akkor a következő technikát használhatjuk:

  • Először is válasszunk ki véletlen számokat az 1. tartományban..N.
  • Másodszor, válassza ki a rekordokat a véletlen számok alapján.

A következő utasítás segít ennek elérésében:

Code language: SQL (Structured Query Language) (sql)

Megjegyezzük, hogy a felhasználó által meghatározott változók kapcsolatspecifikusak. Ez azt jelenti, hogy ez a technika nem használható a kapcsolatgyűjtéssel. Ezen kívül az elsődleges kulcsnak egész típusúnak kell lennie, és értékeinek hiánytalanul a sorrendben kell állniuk.

Ezzel a bemutatóval több technikát is bemutattunk a véletlenszerű rekordok kiválasztására egy táblázatból.

  • Hasznos volt ez a bemutató?
  • IgenNem

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.