Шифрование MySQL, что делает этот запрос? - PullRequest
0 голосов
/ 29 марта 2020

Так что я проходил некоторые работы и видел это. Может кто-нибудь объяснить мне, что это делает? Единственное, что я знал, это то, что Active_Tournaments - это View, полный значений md5 Ha sh.

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;

Заранее спасибо

1 Ответ

1 голос
/ 29 марта 2020

он показывает некоторый случайный TID из Active_Tournaments

SELECT @t := @t + 1 id
FROM Active_Tournaments,
   (SELECT @t := 0) AS s

Это дает каждому ряду в Active_Tournaments порядковый номер

Затем вы получаете наибольший максимальный округленный номер MAX (id) и умножаете его на случайное число .

С CEIL вы снова получаете целое число.

В первом SELECT

 (
 SELECT @s := @s + 1 id, TID FROM Active_Tournaments, (SELECT @s := 0) AS s
 ) as iT

вы снова добавляете номер строки в Active_Tournaments и выбираете только те строки, которые имеет соответствующий номер в CEIL (RAND () * MAX (id)).

Таким образом, вы получите псевдослучайные TID

Я бы добавил

select DISTINCT iT.TID

Даже если бы там большое количество строк, случайные могут дать одно и то же число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...