Ö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 aRAND()
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