如何将数据从一个表复制到另一个表(两者都有其他不常见的字段)?

新手上路,请多包涵

我有 2 个表 SourceDestination 具有相同的字段。 IDCOUNTRY ,尽管它们也有其他不常见的字段。

我需要将 Source.Country 值复制到连接所在的 Destination.Country ID 。我不能让 SQLite 做到这一点。在 SQL Server 中,这是一项超级简单的任务。

原文由 Ian Vink 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 514
2 个回答
INSERT INTO Destination SELECT * FROM Source;

有关正式定义,请参阅 SQLite 理解的 SQL:INSERT

原文由 joschi 发布,翻译遵循 CC BY-SA 2.5 许可协议

我一直在为此苦苦挣扎,我知道还有其他选择,但我得出的结论是最安全的模式是:

 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 检索的所有列并可能使用 coalescedestination_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;

原文由 Max 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题