Я хотел бы иметь возможность обновлять таблицу с помощью одного оператора UPDATE, но включать в нее различные критерии. Следующий код содержит таблицу test_table, которая содержит main_id, который может иметь идентификаторы product_case и customer_case. Я хотел бы иметь возможность проверить таблицу CASETABLE, и если есть случай «ПК» или «CC», связанный с main_id, то обновите соответствующие поля.
UPDATE
test_table tt
SET
tt.product_case = CASE WHEN ct.TYPE = 'PC' THEN ct.ID ELSE tt_.product_case END,
tt.customer_case = CASE WHEN ct.TYPE = 'CC' THEN ct.ID ELSE tt.customer_case END
FROM
CASETABLE ct
WHERE
ct.STATUS = 'ACTIVE'
AND ct.MAINRECORD = tt.main_id
Очевидно, что это не сработает, если основной WHERE возвращает 2 строки, поскольку каждый случай будет пытаться установить правильное значение, а затем снова установить свое исходное значение, вызывая ошибку SQL 21506 (пытаясь установить более одного раза для одной и той же строки). Как я могу сделать это, не используя только два отдельных оператора UPDATE?