Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Оператор присваивания с групповыми функциями (Alex) 17/01/2011 - 16:28:26
      Re: Оператор присваивания с групповыми функциями (Awful85) 26/01/2011 - 19:01:54

> Original message text:
> From: Alex - 17/01/2011 - 16:28:26
> Subject:Оператор присваивания с групповыми функциями
> -----------------
> В доке есть пример использования оператора присваивания:
> http://dev.mysql.com/doc/refman/5.1/en/extensions-to-ansi.html
> mysql> SELECT @a:=SUM(total),@b:=COUNT(*),@a/@b AS avg FROM test_table;
>
> Однако как ни пытаюсь его реализовать, отказывается этот пример работать:
> mysql> select @s:=sum(id),@c:=count(*),@a:=@s/@c as avg from users;
> +-------------+--------------+------+
> | @s:=sum(id) | @c:=count(*) | avg |
> +-------------+--------------+------+
> | 361 | 21 | NULL |
> +-------------+--------------+------+
>
> Если второй раз выполнить запрос в той же сессии, то результат уже отобразится:
> mysql> select @s:=sum(id),@c:=count(*),@a:=@s/@c as avg from users;
> +-------------+--------------+--------------+
> | @s:=sum(id) | @c:=count(*) | avg |
> +-------------+--------------+--------------+
> | 361 | 21 | 17.190476190 |
> +-------------+--------------+--------------+
> Такое впечатление, что сперва полностью выполняется запрос и только после этого переменной присваивается значение.
>
> Замечено, что если применять оператор присваивания без групповых функций, вопросов никогда не возникает.
>
> Баг ли это?
>


From: Awful85 - 26/01/2011 - 19:01:54
Subject:Оператор присваивания с групповыми функциями
-----------------
на момент когда ты хочешь @a:=@s/@c AS avg у тебя нет значений ни @s, ни @c, а так как они храняться то при втором выполнении они выдают результат


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37887



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |