1
我在SQLite浏览器中打开了一个数据库,并使用完全相同的模式(但不同的数据)连接了一个备份数据库。这个T-SQL更新命令的SQLite 3等效语法是什么
我现在希望将第一个数据库中的email
地址替换为客户端id
所匹配的备份数据库中的email
地址。
在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
那么,如何只更新SQLite中的email
地址?
'backup.tbl_customers.id = id'总是为true,因为'id'指向同一个表。 –
@CL。是的,谢谢这会工作:更新tbl_customers 设置电子邮件=(从备份.tbl_customers选择bc.email 作为bc其中bc.id = tbl_customers.id) –