sqlite将数据从一个表复制到另一个表

SQLITE

我有两个表“源”和“目的地”具有相同的字段。 ID和COUNTRY,虽然他们都有其他领域也是不相同的。

我需要将Source.Country的值复制到ID是连接的Destination.Country

对于我的生活,我不能让Sqlite做到这一点。

在SQL Server等这是一个超级简单的任务。

想法?

INSERT INTO Destination SELECT * FROM Source; 

查看SQL As Understood通过SQLite:INSERT获得正式的定义。

如果您的数据已经存在于这两个表中,并且您希望根据某些条件更新表列值,请使用此值

 UPDATE Table1 set Name=(select t2.Name from Table2 t2 where t2.id=Table1.id) 

如果你正在复制这样的数据,这可能意味着你的datamodel没有完全标准化,对吧? 是否有可能做一个国家的名单,并join更多?

您可以使用虚拟表而不是JOIN,因此您不必更改系统中的查询。

我一直在摔跤,我知道还有其他的select,但是我得出结论:最安全的模式是:

 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中,因为它们function强大但有点风险。

使用上面的模式结束了两个country领域。 您可以通过明确指出要从destination_old检索的所有列来避免这种情况,并且如果sourcecountry字段为null,则可以使用coalesce检索destination_old中的值。 举个例子:

 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;