Я пытаюсь обновить таблицу A данными из таблицы B. Я думал, что смогу сделать что-то вроде:
UPDATE A
SET A.name = B.name
WHERE A.id = B.id
но, увы, это не сработает.
У кого-нибудь есть идея, как я могу это сделать?
Я пытаюсь обновить таблицу A данными из таблицы B. Я думал, что смогу сделать что-то вроде:
UPDATE A
SET A.name = B.name
WHERE A.id = B.id
но, увы, это не сработает.
У кого-нибудь есть идея, как я могу это сделать?
Ваш запрос не работает, потому что у вас нет предложения ОТ, которое указывает таблицы, которые вы используете с помощью 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
Для Microsoft Access
UPDATE TableA A
INNER JOIN TableB B
ON A.ID = B.ID
SET A.Name = B.Name
Я царапал себе голову, не имея возможности получить работу синтаксиса для входа в 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
Ответы не работали для меня с postgresql 9. 1+
Это то, что я должен был сделать (вы можете узнать больше в руководстве здесь)
UPDATE schema.TableA as A
SET "columnA" = "B"."columnB"
FROM schema.TableB as B
WHERE A.id = B.id;
Вы можете опустить схему, если вы используете схему по умолчанию для обеих таблиц.
Это может быть следующим:
UPDATE A
SET A.'id' = (SELECT id from B WHERE A.title = B.title)