我在 SQLite 浏览器中打开了一个数据库,并附加了一个具有完全相同架构(但数据不同)的备份数据库。
我现在希望用客户匹配的备份数据库中的地址替换email
第一个数据库中的email
地址id
。
在 SQL Server 中,我会这样写:
update tbl_customers
set email = backup.tbl_customers.email
from tbl_customers
inner join backup.tbl_customers on backup.tbl_customers.id = tbl_customers.id
我已经看到其他 SO 帖子建议 SQLite 的以下语法似乎应该有效(并且这些建议被标记为正确答案)。但这似乎将所有email
地址设置为相应备份数据库中的第一个电子邮件地址 - 显然不是我想要的。
update tbl_customers
set email = (select backup.tbl_customers.email
from backup.tbl_customers
where backup.tbl_customers.id = id)
以下语句在 SQLite 中“有效”,但显然它用备份数据库中相应行中的列覆盖了第一个数据库中的所有列。
INSERT OR REPLACE INTO tbl_customers
SELECT *
FROM backup.tbl_customers
那么如何只更新email
SQLite 中的地址呢?
SQLite不支持update
用join
。但你可以这样做:
update tbl_customers
set email = (select bc.email
from backup.tbl_customers bc
where bc.id = tbl_customers.id
)
where exists (select 1
from backup.tbl_customers bc
where bc.id = tbl_customers.id
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句