Así que yo estaba pasando por algunas cosas de trabajo y vi esto. Pueden agradar a alguien me lo explique esto? Lo único que sabía es que Active_Tournaments es una vista completa de MD5 valores Hash.
select iT.TID
from (
SELECT @s := @s + 1 id, TID FROM Active_Tournaments, (SELECT @s := 0) AS s
) as iT
inner join
(
SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM (select *
from (SELECT @t := @t + 1 id
FROM Active_Tournaments,
(SELECT @t := 0) AS s) as iT) as ittt)) as id
) as ceil
on iT.id = ceil.id;
Gracias por adelantado
que muestra algunos TID randon de Active_Tournaments
SELECT @t := @t + 1 id
FROM Active_Tournaments,
(SELECT @t := 0) AS s
Esto le da a cada fila de Active_Tournaments un rownumber
A continuación, se obtiene la más alta rownumber MAX (id) y lo multiplica por un número aleatorio.
Con CEIL se obtiene de nuevo un número entero.
En el primer SELECT
(
SELECT @s := @s + 1 id, TID FROM Active_Tournaments, (SELECT @s := 0) AS s
) as iT
de nuevo agrega un número de fila a los Active_Tournaments y seleccionar sólo las filas que tiene un número correspondiente de CEIL (RAND () * MAX (id)).
Para que pueda obtener seudo aleatorias TID
yo podria agregar
select DISTINCT iT.TID
Incluso si hay un gran número de filas, al azar podría producir el mismo número.