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

sqlite将数据从一个表复制到另一个表,sql,sqlite,Sql,Sqlite,SQLITE 我有两个表Source和Destination具有相同的字段。ID和COUNTRY,尽管它们也有其他不相同的字段 我需要将Source.Country值复制到ID上加入所在的Destination.Country 就我个人而言,我不能让Sqlite这么做 在SQL Server等中,这是一项非常简单的任务 想法 有关正式定义,请参阅。如果要复制这样的数据,这可能意味着您的数据模型没有完全规范化,对吗?是否可以列出一个国家列表并加入更多 除了联接,您还可以使用虚拟表,这样就不必更改系

SQLITE

我有两个表Source和Destination具有相同的字段。ID和COUNTRY,尽管它们也有其他不相同的字段

我需要将Source.Country值复制到ID上加入所在的Destination.Country

就我个人而言,我不能让Sqlite这么做

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

想法


有关正式定义,请参阅。

如果要复制这样的数据,这可能意味着您的数据模型没有完全规范化,对吗?是否可以列出一个国家列表并加入更多


除了联接,您还可以使用虚拟表,这样就不必更改系统中的查询。

如果两个表中都有数据,并且您希望根据某些条件更新表列值,则可以使用此选项

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

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

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;
它是安全的,因为在更改目的地之前,您有一份目的地的副本。我怀疑SQLite中没有包含带有连接的update语句,因为它们功能强大,但有点冒险

使用上面的模式,您将得到两个国家/地区字段。您可以通过显式声明要从destination_old检索的所有列,或者在source中的country字段为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;

赢了;我不工作,因为我需要加入ID字段,并且只更新一个字段国家/地区。您可以轻松地修改SELECT查询中的表达式以匹配实际的表架构。请注意,对于像我这样的noobs。如果使用多个值,请确保将SELECT查询括起来,例如插入users2name、name2值从用户中选择name、从用户中选择name2@冰ツ 这只是在表中插入一条记录,尽管我的用户中有多条记录table@iceツ 是的,我不知道为什么那个评论得到了10多张赞成票,因为它完全错了。下面是您的操作方法:插入到新的\u表\u名称col1,col2选择col1,从旧的\u表\u名称中选择col2;我们从一个表更新到另一个表只是一个数据清理练习。我只需要更新国家/地区的拼写更改会是这样吗?更新目的地集国家/地区=从源中选择国家/地区,其中id=Destination.id存在,从源中选择1,其中id=Destination.id;如果表2的行数少于表1,则执行此操作将擦除表1中的数据。除此之外,其他操作均无效。就我而言。谢谢SQLite->更新内容集contentp=从title中选择title.title,其中title.PageNo=content.PageNo
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;