2013-04-27 6 views
0

Этот запрос дает ошибку: 1093ежегодное изменение значений с подзапроса

UPDATE values_table as outer_select 
    SET annual_change = sample_value - (
     SELECT sample_value FROM values_table 
     WHERE date_sampled = DATE_SUB(outer_select.date_sampled, INTERVAL 1 YEAR) 
    ); 

Я пытаюсь установить annual_change для каждой строки равной sample_value менее в прошлом году текущей строки в sample_value-х.

Данные не возвращаются к началу, поэтому как может быть устранено отсутствие исторических значений?

ответ

1

Попробуйте

UPDATE values_table as a 
join values_table as b 
ON b.date_sampled = DATE_SUB(a.date_sampled, INTERVAL 1 YEAR) 
set a.annual_change = a.sample_value - b.sample_value