Véletlenszerű lekérdezés
Közvetlenül MySQL-ben van arra lehetőségem, hogy egy táblából véletszenszerűen válasszon ki 50 rekordot, majd azt véletlenszerű sorrendbe tegye? Olyasmire gondolok, mint amilyen pl. a shuffle() függvény PHP-ben. A MySQL-beli rand() függvény többszöri lefuttatása azért nem jó, mert ebben az esetben egy rekord többször is szerepelhet.
Gondoltam arra is, hogy lekérem az összes rekordot, majd PHP-ből shuffle() és csak 50 velemre csonkítom a tömböt. De ez ennek nincs sok értelme, sok rekordnál nem lehet valami gyors megoldás.
Van valakinek javaslata?
■ Gondoltam arra is, hogy lekérem az összes rekordot, majd PHP-ből shuffle() és csak 50 velemre csonkítom a tömböt. De ez ennek nincs sok értelme, sok rekordnál nem lehet valami gyors megoldás.
Van valakinek javaslata?
limit?
ez nem igazán jó
$random_offset = rand(0,$max-50);
majd pedig az alábbi lekérdezéssel
SELECT * FROM tablename LIMIT $random_offset,50
kapsz random helyről kiindulva 50 egymást követő elemet a táblából.
Ha még jobban keverni akarod, erre ráküldhetsz még egy shuffle()-t, vagy az előbbi lekérdezésbe belerakhatod, hogy
ORDER BY RAND()
és akkor soronként rendezget is, ami megint megkavarja picit. Esetleg csinálhatsz két 25-ös lekérdezést, és összekeverheted az eredményüket, de ott is az alapkoncepció a fenti. Jó munkát!
pedig jó
Felhő
bocs, csak a rend kedvéért
milyen fórumban?
Ennek igazából nem is igazán van értelme, szóval nem is érthető, hogy mit szerettél volna.
Kíváncsi lennék valami konkrétumra ezzel kapcsolatban. Nem mindegy, hogy milyen fórumot olvasol, nem kell mindent elhinni.
Szerintem meg ritka rossz megoldás. Eleve a Te megoldásodban mindig 50 egymást követő elemből fog állni a találati lista, tehát pont kevésbé lesz random, mint a kiindulási állapotban lévő, plusz még bonyolultabb kódot fog eredményezni. Viszont az sem igaz, hogy erőforrásigényesebb lenne, hiszen ott nem kell rendezni, és az első 50 sor után le is állhat a query, mig az order by rand esetben nem.
Próbáld ki azért, mielőtt leírod: sose tapasztaltam még ilyesmit.
Felhő
Ez hülyeség
Az SQL nem így működik
ORDER BY id
, akkor mi helyettesítődik be? A sorok összehasonlításakor az adott oszlop értéke. No, itt meg soronként egy véletlenszám. Azaz mindig más. Teljesen rossz az SQL értelmezésed.rand() hiba javítva
[9 Jul 2003 11:13] Paul DuBois
Thank you for your bug report. This issue has already been fixed
in the latest released version of that product
működik