sql - 使用 psycopg2 在 UPDATE SET 语句中更新超过 1 个 db 列

标签 sql postgresql python-3.x psycopg2

我尝试根据在另一个表中找到的值更新一个表。以下作品:

UPDATE table1 SET col1 = ( SELECT col1 from table2 WHERE table2.col1 = table1.col1 );

我想使用多个列来做同样的事情。我认为以下应该会带来预期的结果”

UPDATE table1 SET (col1, col2) = ( SELECT col1, col2 from table2 WHERE table2.col1 = table1.col1 );

但是我得到了一个

syntax error at or near "SELECT"
LINE 1: UPDATE table1 SET (col1, col2) = ( SELECT col1, col2 f...

感谢任何帮助。

最佳答案

这应该有效:

update table1 t1
set col1 = t2.col1, 
  col2 = t2.col2
from table2 t2
where t1.col1 = t2.col1;

话虽如此,无需更新 col1 = t2.col1,因为这是您的加入标准。

关于sql - 使用 psycopg2 在 UPDATE SET 语句中更新超过 1 个 db 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236060/

相关文章:

mysql - 为什么不正确地命令 asc?

sql - 在 postgresql 中翻转 bool 值

database - 当插入比查询多得多时必须应用数据库规范化吗?

python-3.x - 从不同的文件夹导入so文件

python - Coverage.py 无法发现子目录中没有 init.py 文件的测试

mysql - qt创建者错误: LNK 2019: unresolved external symbol “__declspec(dllimport) public: void__thiscall

sql - sql中如何查找列中的最小值

mysql - 无法创建表 - 无法添加外键约束

database - 确保在多台机器上跨表生成唯一的 key

python - 如何通过重新启动应用程序来克服ModbusTcpServer中的 "Address already in use"?