2016-08-12 2 views
1

Я хочу знать, выполняется ли порядок выполнения выражений в SELECT с слева направо.Порядок выполнения выражений в инструкции SELECT

SET @a := 0; 

SELECT 
@a AS first, 
@a := @a + 1 AS second, 
@a := @a + 1 AS third, 
@a := @a + 1 AS fourth, 
@a := @a + 1 AS fifth, 
@a := @a + 1 AS sixth; 

Гарантировано, что указанный выше запрос всегда будет генерировать следующий результат?

first second third fourth fifth sixth 
    0  1  2  3  4  5 

ответ

2

Согласно MySQL manual:

Однако, порядок вычисления выражений, связанных с пользователем переменных не определен

Таким образом, ответ на ваш вопрос, нет, порядок выполнения не гарантировано.

+0

Спасибо за ссылку Giorgos. вероятно, мой следующий вопрос будет ** Почему порядок оценки для выражений, включающих пользовательские переменные, не определен? **: -/ –

+0

@AnonymousOne Вы должны спросить разработчиков MySQL для этого. Но какова ваша * актуальная проблема? –

+0

На самом деле проблема в том, что у меня есть некоторые запущенные запросы в некоторых приложениях, в которых используются пользовательские переменные mysql. Поскольку порядок оценки выражений с использованием пользовательских переменных не определен, так что я слишком заинтересован в этом. :( –

0

Да, любым способом нет конфигурации для исполнения, поэтому вы всегда получаете выход так.

+0

Не могли бы вы предоставить любую ссылку? Я хочу узнать больше/подробно. –

+0

Пожалуйста, посмотрите на ответ Гиоргоса. –