У меня есть следующая схема:
CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, val INTEGER, previousval INTEGER)
Я хочу сохранить значение val
и автоматически скопировать предыдущее значение в столбец previousval
:
id val previousval
1 100 NULL
2 200 100
3 300 200
I пробовал следующий запрос и SQLite выдает мне сообщение об ошибке, которое я не понимаю.
INSERT INTO test as test1 (id, val, previousval) VALUES (NULL, 1, (SELECT test2.val FROM test AS test2 WHERE test2.id<test1.id ORDER BY test2.id DESC LIMIT 1))
> no such column: test1.id
Я пробовал другой запрос:
INSERT INTO test (id, val, previousval) VALUES (NULL, 100, (SELECT test2.val FROM test AS test2 WHERE test2.id<id ORDER BY test2.id DESC LIMIT 1))
INSERT INTO test (id, val, previousval) VALUES (NULL, 200, (SELECT test2.val FROM test AS test2 WHERE test2.id<id ORDER BY test2.id DESC LIMIT 1))
INSERT INTO test (id, val, previousval) VALUES (NULL, 300, (SELECT test2.val FROM test AS test2 WHERE test2.id<id ORDER BY test2.id DESC LIMIT 1))
Результат не тот, который я ожидаю, и я не Не понимаю, почему.
id val previousval
1 100 NULL
2 200 NULL
3 300 NULL
Я использую sqlite-amalgamation-3310100. Я также использую SQLiteStudio для тестирования.
Как автоматически скопировать значение поля в столбец, используя INSERT INTO
?