El cifrado de MySQL, ¿Qué hace esta consulta?

A. Crispino:

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

NBK:

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.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=387709&siteId=1
Recomendado
Clasificación