Autor | Zpráva | ||
---|---|---|---|
yFang Profil |
#1 · Zasláno: 15. 11. 2012, 13:38:03
Potřeboval bych udělat dotaz, který by vybral náhodný řádek s ohledem na šanci, která bude uložená v jednom ze sloupců toho řádku.
Příklad (počet položek se bude měnit): +------+--------+ | name | chance | +------+--------+ | A | 8 | | B | 15 | | C | 7 | +------+--------+ |
||
Kajman Profil |
Možná si předpočítat do nějakého indexovaného sloupce intervaly 0-1 podle té šance
+------+--------+-------------+ | name | chance | randto | +------+--------+-------------+ | A | 8 | 0.266666666 | | B | 15 | 0.766666666 | | C | 7 | 1.000000000 | +------+--------+-------------+ a pak udělat nenáročný dotaz (verze s rand ve where nebyla dobrá) SELECT * FROM tbl CROSS JOIN (SELECT Rand() r FROM DUAL) r WHERE randto < r.r ORDER BY randto DESC LIMIT 1 |
||
yFang Profil |
#3 · Zasláno: 15. 11. 2012, 22:35:15
Ok, vyzkouším to, díky.
|
||
Časová prodleva: 11 let
|
0