首页 > 解决方案 > SQLite 不能一次更新多个表

问题描述

UPDATE X, Y
SET X.3="Updated String", Y.3="Updated String"
WHERE X.1 = Y.1
AND X.2 = Y.2;

上面的查询在 MySQL 上运行良好。我在将其迁移到 SQLite 时遇到问题,因为 SQLite 不支持一次更新多个表(子查询可能有效,但我不知道该怎么做)。我正在尝试使用 python 的 sqlite3 模块运行此查询。

请将 X 和 Y 视为具有 1、2、3 列的表格。

任何人都可以帮助我吗?提前致谢

标签: python-3.xsqlitesql-update

解决方案


SQLite 不支持多表更新。
只能使用 2 个单独的更新语句来完成:

UPDATE X
SET X.3 = 'Updated String'
WHERE EXISTS (SELECT 1 FROM Y WHERE X.1 = Y.1 AND X.2 = Y.2);

UPDATE Y
SET Y.3 = 'Updated String'
WHERE EXISTS (SELECT 1 FROM X WHERE X.1 = Y.1 AND X.2 = Y.2);

推荐阅读