Подтвердить что ты не робот

Обновить запрос с объединением на две таблицы

У меня есть таблицы customer и address.

Query:

SELECT *
FROM addresses a,
     customers b
WHERE a.id = b.id

возвращает 474 записи

Для этих записей я хотел бы добавить таблицу id из customer в таблицу cid таблицы address.

Пример: Если для первой записи идентификатор клиента равен 9 и id адреса также 9, я хотел бы вставить 9 в столбец cid таблицы адресов.

Я пробовал:

UPDATE addresses a,
       customers b
SET a.cid = b.id
WHERE a.id = b.id

но это, похоже, не работает.

4b9b3361

Ответ 2

Официально языки SQL не поддерживают предложение JOIN или FROM в инструкции UPDATE, если оно не находится в подзапросе. Таким образом, подход Hoyle ANSI был бы похож на

Update addresses
Set cid = (
            Select c.id
            From customers As c
            where c.id = a.id
            )
Where Exists    (
                Select 1
                From customers As C1
                Where C1.id = addresses.id
                )

Однако многие СУБД такие Postgres поддерживают использование предложения FROM в инструкции UPDATE. Во многих случаях вы должны включать таблицу обновления и псевдоним в предложение FROM, но я не уверен в Postgres:

Update addresses
Set cid = c.id
From addresses As a
    Join customers As c
        On c.id = a.id

Ответ 3

Использование псевдонимов таблиц в условии соединения:

update addresses a
set cid = b.id 
from customers b 
where a.id = b.id

Ответ 4

update addresses set cid=id where id in (select id from customers)

Ответ 5

Попробуйте этот

UPDATE employee 
set EMPLOYEE.MAIDEN_NAME = 
  (SELECT ADD1 
   FROM EMPS 
   WHERE EMP_CODE=EMPLOYEE.EMP_CODE);
WHERE EMPLOYEE.EMP_CODE >='00' 
AND EMPLOYEE.EMP_CODE <='ZZ';