Обновление с помощью двух таблиц? Я пытаюсь обновить таблицу A данными из таблицы B. Я думал, что смогу сделать что-то вроде: UPDATE A SET A.name = B.name WHERE A.id = B.id но, увы, это не сработает. У кого-нибудь есть идея, как я могу это сделать? Ответ 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)
Ответ 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
Ответ 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; Вы можете опустить схему, если вы используете схему по умолчанию для обеих таблиц.