Просто чтобы подчеркнуть пост Георгия Хигли:
У меня были проблемы с UPDATE tbl1 SET col2 = (SELECT col2 FROM tbl2 WHERE tbl2.col1 = tbl1.col1)
, когда он обновляет столбцы в tbl1, которых нет в tbl2.
см. Сообщение о гепарде в http://sqlite.phxsoftware.com/forums/p/1708/7238.aspx, которое указывает на:
http://www.mail-archive.com/sqlite-users@sqlite.org/msg27207.html
Код:
insert or replace into foo (id, name, extra)
select bar.id, bar.name, foo.extra
from bar left join foo on bar.id = foo.id;
и это, кажется, работает правильно. Кажется, на разных сайтах есть много постов, которые рекомендуют первый подход, так что это немного сбивает с толку. Я бы посоветовал вам очень тщательно проверить вывод, если вы используете этот метод, который кажется более быстрым и может работать с сопоставленными таблицами.