Почему в MySQL нельзя в подзапросе использовать переменные?

С помощью переменной считаю накапливаемую сумму с условием:
-- SELECT * FROM (
  SELECT o2.uid, o2.ts, 
    (@till := IF (@till < o2.ts, o2.ts + 10, @till + 10)) AS until
  FROM orders AS o2 JOIN (SELECT @till := 0) AS r
  WHERE o2.uid = 1;
-- ) AS t1
создание таблицы
CREATE TABLE orders (
  id INT NOT NULL AUTO_INCREMENT,
  uid INT NOT NULL ,
  ts INT NOT NULL ,
  PRIMARY KEY (id)
);

-- Paid duraion = 10
-- 1: 0-10, 12-22 + 21-31 = 32
-- 2: 12-22, 22-32 + 22-32 = 42
INSERT INTO orders (uid, ts) 
VALUES (1,0), (2,12), (1,12), (1,21), (2,22), (2,22);

Внутренний запрос работает. Но если его обернуть во внешний SELECT, раскомментить строки, MySQL ругается на ошибку в строке 5, где WHERE

MySQL 5.6, SQL fiddle

Первый вопрос - в заголовке: «Почему?».
Второй вопрос: как из внутреннего запроса получить только последнее значение накопленное переменной?
Задача из таблицы заказов для каждого из пользователей, делваших заказы, расчитать значение вычисляемого параметра.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
1. наверное точка с запятой мешает
2. взять значение переменной после запроса
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы