SQL, как выполняются инструкции select в связанных подзапросах

#mysql #sql #subquery #mysql-dependent-subquery

Вопрос:

Я пытался понять следующий код. Я думаю, что первый подзапрос создаст таблицу с 2,3,4,5,6. Для второго подзапроса, я думаю, он будет выполняться следующим образом. Например, поскольку начальное значение @делителя равно 1, для nn=2 выполняется условие, при котором @num2 Поскольку условие where все еще действует, оператор select будет выполнен снова, чтобы значение @divisor было равно 3. В это время условие where недопустимо, оператор select остановится.

Исходя из этого понимания, я думаю, что результат кода должен быть 2,3,4,5,6, а конечное значение @divisor будет равно 6. Однако, когда я запускаю код в mysql, результат равен нулю. Никаких записей.

Кто-нибудь может мне с этим помочь? Большое спасибо.

 set @num:=2;
set @num2:=1;

select nn from
    (select @num:=@num 1 as nn from 
    information_schema.tables t1, information_schema.tables t2
    where @num<=5) a
where nn in
    (select @num2:=@num2 1 from
    information_schema.tables t3, information_schema.tables t4
    where @num2<=nn)
 

Комментарии:

1. MySQL не предоставляет никаких гарантий порядка обработки выражений. Кроме того, назначение переменных в SELECT запросе теперь устарело. Потратьте свои усилия на изучение чего-то полезного.