database - 如何从 sqlite3 附加数据库中的列进行更新?

标签 database sqlite

经过 4 个小时的谷歌搜索和更多个小时的实验后,我最后的希望是有人可以告诉我当我尝试以下操作时发生了什么:

    sqlite3 test1.sqlite
    attach database 'test2.sqlite' as newDB;

这有效 - 没有错误消息,并且“.databases”将“newDB”显示为#2。 “newDB”和“main”具有完全相同的结构:相同的表、相同的列、所有内容都相同的名称。简单的东西,比如

    select * from main.ztip;

    select * from newDB.ztip;

有效。 (“ztip”显然是两个数据库中的有效表名。)但是当我尝试做我需要做的事情时(为了简单起见,省略 WHERE 子句)

    update main.ztip set zisfavorite=newDB.ztip.zisfavorite;

轰!未找到“newDB.ztip.zisfavorite”列。同样适用

    update main.ztip set zisfavorite=newDB.zisfavorite;

我出于绝望而尝试了它。 (列名称是唯一的。)

有人知道我想做的事情是否可行以及如何实现?

提前致谢, 汤姆

最佳答案

不太清楚您要在此处更新的内容。

col_acol_b 是同一表中的列时,您可以使用 UPDATE my_table SET col_a=col_b:这将更新设置值每行将 col_b 转换为 col_bcol_b 不仅仅是一个列名,在本例中它还与一个特定值相关联。

但是,在 update main.ztip set zisfavorite=newDB.ztip.zisfavorite 中,newDB.ztip.zisfavorite 表示整个列。没有理由知道您愿意使用哪一行和哪一个值。

也许你应该使用类似的东西:

UPDATE main.ztip z1 SET zisfavorite=(SELECT z2.zisfavorite FROM newDB.ztip z2 WHERE z2.id=z1.id)

当然,where 子句的详细信息取决于表的实际结构。确保它只返回一个值。

关于database - 如何从 sqlite3 附加数据库中的列进行更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9769824/

相关文章:

asp.net-mvc - 安装 Oracle Developer Tools for Visual Studio 2017 时出错

ruby - 如何从Ghost中提取博客文章并导入到Github托管的jekyll中?

sql-server - 将依赖项转换为指向 View 而不是 Table

c# - 使由数据适配器填充的数据表中的列宽更宽

Mongodb 查找()不起作用

java - 除了性能之外,包装类型还有什么缺点吗?

LINQ 与 SQLite (linqtosql)

java - 如何在没有服务器的情况下在多个设备中的同一个应用程序之间共享数据库

sqlite - Flash Builder 4.5,sqlite数据库查询问题

python-3.x - 使用 Python 3 在 AWS lambda 上出现 sqlite3 错误