在多值列中查找值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在多值列中查找值相关的知识,希望对你有一定的参考价值。

我有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

以上是关于在多值列中查找值的主要内容,如果未能解决你的问题,请参考以下文章

通过 vba ms 访问将多值列的数据绑定到组合框中

Bigquery 表嵌套多值列在查询时出错

在多值参数中选择两个选项但传递一个值

如何使用类型化数据集将多值列拆分为单独的行?

Magnolia:如何在多值复合字段中启用 I18N?

Pandas 数据框:如何按多值列将一行拆分为多行? [复制]