我有2个表如下:
Tam尝试从Dep表中获取每个员工的部门名称(表Emp表中的DepName列):
我写了这个查询:
update Emp
set DepName= (
select DepName
from Dep
where array_to_string(EmpID, ',') like EmpID
);
虽然我没有收到任何错误,但它没有使用所请求的信息更新表Emp。有帮助吗?
你可以做:
update emp
set dept = d.depname
from dep
where emp.empid = any (dep.empid);
指出这一点后,你不应该这样做。相反,我建议你有一个到department表的正确链接,并使用join
来引入部门名称。
你必须将id int转换为字符变化数组数据类型,然后使用包含表运算符的contains运算符并像往常一样更新
UPDATE emp t1
SET dept = dname
from dept t2
where t2.eid @> concat(concat('{',(t1.id::text)),'}') ::varchar[]
https://dbfiddle.uk/?rdbms=postgres_9.6&fiddle=e5c24b26b3479b68adf0b17c2050f715