Пользовательская переменная в подзапросе MySQL
Query Output:
>
SELECT
@foo := 1,
@foo,
(SELECT @foo),
(SELECT foo FROM (SELECT @foo AS foo) subselect)
+ -------------- + --------- + ------------------ + ----------------------------------------------------- +
| @foo := 1 | @foo | (SELECT @foo) | (SELECT foo FROM (SELECT @foo AS foo) subselect) |
+ -------------- + --------- + ------------------ + ----------------------------------------------------- +
| 1 | 1 | 1 | 0 |
+ -------------- + --------- + ------------------ + ----------------------------------------------------- +
1 rows
Ну... я просто хочу знать, почему значение четвертого столбца равно 0 вместо 1.
1 ответ
Решение
Потому что это FROM (SELECT @foo AS foo)
оценивается до этого @foo := 1
, В основном все, что в FROM будет оцениваться до вашего SELECT.
Это на самом деле должно быть нулевым, но я предполагаю, что вы присвоили своей переменной сеанса значение ноль где-то еще.