在多值列中查找值

时间:2018-09-05 10:39:46

标签: sql postgresql sql-update

我有2张桌子,如下所示:

Original tables look like this

Tam试图从Dep表中获取每个雇员的部门名称(表Emp表中的DepName列):

To be like

我写了这个查询:

update Emp
 set DepName= (
 select DepName
 from Dep
where array_to_string(EmpID, ',') like EmpID
);

它没有用请求的信息更新表Emp,尽管我没有任何错误。有帮助吗?

2 个答案:

答案 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