поиск значения в столбце с несколькими значениями - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 2 таблицы следующим образом:

Original tables look like this

Там пытается получить название отдела каждого сотрудника (столбец DepName в таблице Emp) из таблицы Dep:

To be like

Я написал этот запрос:

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

Он не обновил таблицу Emp с запрошенной информацией, хотя я не получил никакой ошибки. Любая помощь?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы можете сделать:

update emp
    set dept = d.depname
    from dep
    where emp.empid = any (dep.empid);

Указав на это, вы не должны делать это. Вместо этого я хотел бы предложить вам правильную ссылку на таблицу отдела и использовать join для ввода названия отдела.

0 голосов
/ 05 сентября 2018

вам нужно преобразовать id int в тип данных массива с переменным символом, а затем использовать оператор содержит с таблицей 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...