Subtraindo uma linha de dados de outra no SQL

Fui enganado com algum SQL, onde tenho várias linhas de dados e quero subtrair uma linha da linha anterior e repeti-la até o fim.

Então aqui está a tabela:

CREATE TABLE foo (
  id,
  length
)
INSERT INTO foo (id,length) VALUES(1,1090)
INSERT INTO foo (id,length) VALUES(2,888)
INSERT INTO foo (id,length) VALUES(3,545)
INSERT INTO foo (id,length) VALUES(4,434)
INSERT INTO foo (id,length) VALUES(5,45)

Eu quero que os resultados mostrem uma terceira coluna chamada diferença, que é uma linha subtraindo da linha abaixo com a linha final subtraindo de zer

+------+------------------------+
| id   |length |  difference  |
+------+------------------------+
|    1 | 1090  |  202         |
|    2 |  888  |  343         |
|    3 |  545  |  111         |
|    4 |  434  |  389         |
|    5 |   45  |   45         |

Eu tentei uma auto-junção, mas não sei exatamente como limitar os resultados, em vez de fazê-lo circular por si mesmo. Não posso depender que o valor do ID seja seqüencial para um determinado conjunto de resultados, então não estou usando esse valor. Eu poderia estender o esquema para incluir algum tipo de valor sequencia

Isto é o que eu tentei:

SELECT id, f.length, f2.length, (f.length - f2.length) AS difference
FROM foo f, foo f2

Obrigado pela assistência.