Переменная foo здесь в условии как раз для того, чтобы проверить выполняется ли условие или нет. В первом случае плдучается что Mysql игнорирует правую часть AND, во втором нет
Да нет. Мне это не нужно. Вопрос в том, почему в принципе Mysql не выполняет AND(@foo:=@foo+1) в первом случае. Причем результаты выборки в двух случаях абсолютно одинаковые, отличаются только тем что в первом случае @foo не инкрементируется
хм, если написать select @foo, t2.id … and @foo := 5, то результат будет
0 null
0 null
… …
5 1
5 2 и т.д.
Т.е. в принципе значение присваивается.
Если просто указать and @foo, когда foo равен нулю (=false), все джоины будут null, т.е. условие выполняется.
Значит, @foo:=@foo+1 в каждой строке в принципе срабатывает (сводится к true), но значение переменной уже не сохраняется