我有2张桌子,如下所示:
Tam试图从Dep表中获取每个雇员的部门名称(表Emp表中的DepName列):
我写了这个查询:
update Emp
set DepName= (
select DepName
from Dep
where array_to_string(EmpID, ',') like EmpID
);
它没有用请求的信息更新表Emp,尽管我没有任何错误。有帮助吗?
答案 0 :(得分:1)
您可以这样做:
update emp
set dept = d.depname
from dep
where emp.empid = any (dep.empid);
已经指出,您不应该这样做。相反,我建议您有一个正确的部门表链接,并使用join
来输入部门名称。
答案 1 :(得分:0)
您必须将id int转换为字符可变的数组数据类型,然后将contains运算符与表dept一起使用,并照常进行更新
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