我有 2 个表 Source
和 Destination
具有相同的字段。 ID
和 COUNTRY
,尽管它们也有其他不常见的字段。
我需要将 Source.Country
值复制到连接所在的 Destination.Country
ID
。我不能让 SQLite 做到这一点。在 SQL Server 中,这是一项超级简单的任务。
原文由 Ian Vink 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有 2 个表 Source
和 Destination
具有相同的字段。 ID
和 COUNTRY
,尽管它们也有其他不常见的字段。
我需要将 Source.Country
值复制到连接所在的 Destination.Country
ID
。我不能让 SQLite 做到这一点。在 SQL Server 中,这是一项超级简单的任务。
原文由 Ian Vink 发布,翻译遵循 CC BY-SA 4.0 许可协议
我一直在为此苦苦挣扎,我知道还有其他选择,但我得出的结论是最安全的模式是:
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;
原文由 Max 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答785 阅读✓ 已解决
1 回答1k 阅读
1 回答765 阅读
782 阅读
有关正式定义,请参阅 SQLite 理解的 SQL:INSERT 。