Пользовательские переменные - боевой синтаксис - PullRequest
1 голос
/ 26 января 2009

Может кто-нибудь установить мой синтаксис MySQL, пожалуйста? Я пытаюсь установить пользовательскую переменную с именем «seconds» равной выводу запроса, показанного ниже (и он работает сам по себе), но я постоянно получаю ошибки «У вас ошибка в синтаксисе SQL».

SET @seconds=AVG(t2.epoch-t1.epoch)
             FROM tmp_4045_metrics AS t1, tmp_4045_metrics AS t2
             WHERE t1.seq+1 = t2.seq

Я пробовал SELECT AVG ...., (SELECT AVG ...) и многие другие, но всегда с одним и тем же предупреждением об ошибке, что мой синтаксис неверен и никогда не подсказывает, где он неправильный.

Кто-нибудь может указать мне правильное направление?

Спасибо, Рич

Ответы [ 3 ]

1 голос
/ 26 января 2009

Если я правильно помню (и он работает на MS SQL Server на работе), это должно сделать это:

Select @seconds=AVG(t2.epoch-t1.epoch)
             FROM tmp_4045_metrics AS t1, tmp_4045_metrics AS t2
             WHERE t1.seq+1 = t2.seq
0 голосов
/ 17 апреля 2012

В операторе SELECT используйте оператор присваивания: = (не оператор =):

SELECT @seconds := AVG(t2.epoch-t1.epoch)
    FROM tmp_4045_metrics AS t1, tmp_4045_metrics AS t2
    WHERE t1.seq+1 = t2.seq
0 голосов
/ 27 января 2009

Теперь SELECT @seconds = ... работает без ошибок - взломать :) и SELECT @seconds возвращается, но он пуст.

И я трижды проверил, что оператор возвращает значение (если быть точным, 300 секунд). Вернуться к чертежной доске

Спасибо за предложение, лучше, чем я сам достиг.

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