gpt4 book ai didi

sql - 使用 subselect 从另一个表更新一个表

转载 作者:行者123 更新时间:2023-11-29 13:20:59 28 4
gpt4 key购买 nike

使用 postgresql 我有一个表 A,其中包含列 company_namedepartment_name、一些其他数据和 department .

我有另一个表 B,其中只有 company_namedepartment_namedid。 (这是两个之间存在关系的表,但我从中创建了一个 View 以使语法更简单。)

我想将具有匹配名称的行的 A.department 设置为 B.did。它是规范化过程的一部分。

根据这个Q&A我试过:

UPDATE A 
SET department=did
FROM A AS A
INNER JOIN B
ON A.company_name = B.company_name AND A.department_name=B.department_name;

但我得到的结果是,所有行的 A.department 都设置为相同的值。

(我也尝试了与 here 不同的语法,但出现了预期的语法错误。)

为什么这不起作用,更具体地说,为什么行没有正确匹配。当我对该连接尝试 SELECT 时,我得到了预期的结果。

最佳答案

在 Postgres 中,你想这样写查询:

UPDATE A 
SET department = B.did
FROM B
WHERE A.company_name = B.company_name AND
A.department_name = B.department_name;

当您在 FROM 子句中提到 A 表时,它是对 A单独引用,与正在更新的表无关。简单的解决方案是只引用表一次。

关于sql - 使用 subselect 从另一个表更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com