#postgresql
Вопрос:
У меня есть столы
Table A
a_id
b_id
a_field_1
a_field_2
a_field_3
Table B
b_id
b_field_1
b_field_2
b_field_3
если я хочу обновить a_field_1
только в том случае, если b_field_1
у меня есть определенное условие ? как это сделать ? я пробовал это, но это не работает
UPDATE A SET A.a_field_1 = 1 , A.a_field_2 = 2
WHERE B.b_field_1 = 1 AND A.b_id = B.b_id;
Комментарии:
1. Что происходит вместо этого? Что вы пытались сделать, чтобы это сработало? Возможно, это проще отладить, когда вы делитесь структурой таблицы, образцами входных данных и ожидаемым результатом
Ответ №1:
Согласно документу Postgres, вы можете использовать, как показано ниже:
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
SET { column_name = { expression | DEFAULT } |
( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
( column_name [, ...] ) = ( sub-SELECT )
} [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
Пример Запроса:
UPDATE A
SET a_field_1 = 1, a_field_2 = 2
FROM B
WHERE
B.b_field_1 = 1
AND A.b_id = B.b_id;