Пользовательская переменная в подзапросе MySQL - PullRequest
0 голосов
/ 16 декабря 2011
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 Ответ

2 голосов
/ 16 декабря 2011

Потому что это FROM (SELECT @foo AS foo) оценивается до этого @foo := 1. В основном все, что в FROM будет оцениваться до вашего SELECT.

На самом деле оно должно быть нулевым, но я предполагаю, что вы присвоили переменной сеанса значение ноль где-то еще.

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