Mysql пользовательские переменные и COUNT - PullRequest
2 голосов
/ 15 апреля 2011

Проблема с переменными mysql и количеством
Код ниже:

SELECT @var := 2, @var := @var+2,
count(birey_dil.birey_id) as count,
@var := @var+count(birey_dil.birey_id), 
@var+1
from birey_dil

Вот набор результатов:

+-----------+----------------+-------+----------------------------------------+--------+
| @var := 2 | @var := @var+2 | count | @var := @var+count(birey_dil.birey_id) | @var+1 |
+-----------+----------------+-------+----------------------------------------+--------+
|         2 |              4 |     8 |                                     12 |      5 |
+-----------+----------------+-------+----------------------------------------+--------+

Я установил переменную 2
а затем 2 + 2 = 4
Тогда я считаю строки и результат 8

@ var: = @ var + count (birey_dil.birey_id)

Возврат 4 + 8 12 , но @ var + 1 равно 5
Почему mysql действует так?
@ Var + 1 теперь должно быть 13, и есть ли способ это исправить?

1 Ответ

1 голос
/ 15 апреля 2011

Попробуйте это:
SELECT @var+1 FROM<br> (<br> SELECT @var := 2, @var := @var+2,<br> count(birey_dil.birey_id) as count,<br> @var := @var+count(birey_dil.birey_id),<br> from birey_dil<br> )x Похоже, что mysql сначала вычисляет все @var [+ constant]; это имеет смысл, поскольку не требует доступа к базе данных, и только после этого вычисляет count(birey_dil.birey_id). Наконец это делает @var := @var+count.

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