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

Обновление с помощью двух таблиц?

Я пытаюсь обновить таблицу A данными из таблицы B. Я думал, что смогу сделать  что-то вроде:

 UPDATE A
 SET A.name = B.name
 WHERE A.id = B.id

но, увы, это не сработает.

У кого-нибудь есть идея, как я могу это сделать?

4b9b3361

Ответ 1

Ваш запрос не работает, потому что у вас нет предложения ОТ, которое указывает таблицы, которые вы используете с помощью A/B.

Попробуйте использовать следующее:

UPDATE A
    SET A.NAME = B.NAME
FROM TableNameA A, TableNameB B
WHERE A.ID = B.ID

Лично я предпочитаю использовать более явный синтаксис соединения для ясности, т.е.

UPDATE A
    SET A.NAME = B.NAME
FROM TableNameA A
    INNER JOIN TableName B ON 
        A.ID = B.ID

Ответ 2

Для Microsoft Access

UPDATE TableA A
    INNER JOIN TableB B
    ON A.ID = B.ID
SET A.Name = B.Name

Ответ 3

Я царапал себе голову, не имея возможности получить работу синтаксиса для входа в John Sansom, по крайней мере, в MySQL 5.5.30 InnoDB.

Оказывается, что это не работает.

UPDATE A 
    SET A.x = 1
FROM A INNER JOIN B 
        ON A.name = B.name
WHERE A.x <> B.x

Но это работает:

UPDATE A INNER JOIN B 
    ON A.name = B.name
SET A.x = 1
WHERE A.x <> B.x

Ответ 4

Ответы не работали для меня с postgresql 9. 1+

Это то, что я должен был сделать (вы можете узнать больше в руководстве здесь)

UPDATE schema.TableA as A
SET "columnA" = "B"."columnB"
FROM schema.TableB as B
WHERE A.id = B.id;

Вы можете опустить схему, если вы используете схему по умолчанию для обеих таблиц.

Ответ 5

Это может быть следующим:

UPDATE A 
SET A.'id' = (SELECT id from B WHERE A.title = B.title)