Поля обновления SQL одной таблицы от полей другого

У меня есть две таблицы:

A [ID, column1, column2, column3]
B [ID, column1, column2, column3, column4]

A всегда будет подмножество B (значение всех столбцов A находятся также в B).

Я хочу обновить запись с определенным ID в B с их данными из A для всех столбцов A. Это ID существует оба в A и B.

Есть ли UPDATE синтаксис или какой-либо другой способ сделать это, не указывая имена столбцов, просто говоря "установило все столбцы A"?

Я использую PostgreSQL, таким образом, определенная нестандартная команда также принята (однако, не предпочтена).

114
задан Erwin Brandstetter 29 December 2014 в 15:48
поделиться

4 ответа

вы можете создать и выполнить динамический sql для этого, но это действительно не идеально

0
ответ дан 24 November 2019 в 02:31
поделиться

Попробуйте следовать

Update A a, B b, SET a.column1=b.column1 where b.id=1

EDITED: - Обновить более одного столбца

Update A a, B b, SET a.column1=b.column1, a.column2=b.column2 where b.id=1
-4
ответ дан 24 November 2019 в 02:31
поделиться

Вы можете использовать нестандартное предложение FROM.

UPDATE b
SET column1 = a.column1,
  column2 = a.column2,
  column3 = a.column3
FROM a
WHERE a.id = b.id
AND b.id = 1
215
ответ дан 24 November 2019 в 02:31
поделиться

Не обязательно то, что вы просили, но, может быть, использование наследования postgres может помочь?

CREATE TABLE A (
    ID            int,
    column1       text,
    column2       text,
    column3       text
);

CREATE TABLE B (
    column4       text
) INHERITS (A);

Это позволяет избежать необходимости обновлять B.

Но обязательно прочтите все подробности .

В противном случае то, о чем вы просите, не считается хорошей практикой - динамические вещи, такие как представления с SELECT * ... , не приветствуются (поскольку такое небольшое удобство может больше сломать, чем помочь), и то, что вы просите, будет эквивалентно команде UPDATE ... SET .

5
ответ дан 24 November 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: