----------------------------------------------------------------- -- use commented codes to create temp table first ------------------------------------------------------------------ update stock_hist a inner join temp ref /* ( select a.id, b.id prev_id, a.date cur_date, b.date last_date, concat( cast( ( a.close - b.close ) * 100 / b.close as decimal( 10,2) ), '%' ) change_rate from ( SELECT * FROM stock.stock_hist ) a inner join ( SELECT * FROM stock.stock_hist where id <> ( select max( id ) from stock_hist )) b on a.id = b.id + 1 ) ref */ on a.id = ref.id set a.change_rate = ref.change_rate where a.id = ref.id