Я боровся з цим, і знаю, що є й інші варіанти, але я прийшов до висновку, що найбезпечніший зразок:
create table destination_old as select * from destination;
drop table destination;
create table destination as select
d.*, s.country
from destination_old d left join source s
on d.id=s.id;
Це безпечно, тому що у вас є копія до того, destinationяк ви її змінили. Я підозрюю, що оператори оновлення з об'єднаннями не були включені в SQLite, оскільки вони потужні, але дещо ризиковані.
Використовуючи шаблон вище, ви отримаєте два countryполя. Ви можете цього уникнути, прямо вказавши всі стовпці, з яких ви хочете отримати, destination_oldі, можливо, використовуючи coalesceдля отримання значень, destination_oldякщо countryполе в sourceє нульовим. Так наприклад:
create table destination as select
d.field1, d.field2,...,coalesce(s.country,d.country) country
from destination_old d left join source s
on d.id=s.id;