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

时间:2010-11-27 10:26:14

标签: sql sqlite

SQLITE

我有2个表“Source”和“Destination”具有相同的字段。 ID和COUNTRY,虽然它们都有其他不常见的字段。

我需要将Source.Country值复制到目标连接的Destination.Country

对于我的生活,我不能让Sqlite这样做。

在SQL Server等中,这是一个非常简单的任务。

想法?

4 个答案:

答案 0 :(得分:127)

INSERT INTO Destination SELECT * FROM Source;

有关正式定义,请参阅SQL As Understood By SQLite: INSERT

答案 1 :(得分:9)

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

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

答案 2 :(得分:2)

我一直在努力解决这个问题,我知道还有其他选择,但我得出的结论是最安全的模式:

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中的值1}}为空。例如:

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;

答案 3 :(得分:1)

如果您正在复制这样的数据,那可能意味着您的数据模型没有完全正常化,对吧?是否可以制作一个国家列表并更多地加入?

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