Обновлять столбец, только если присутствуют значения двух столбцов (комбинации обоих), иначе вставить все значения в БД Oracle

В моей базе данных Oracle есть 3 столбца в таблице 'basic_comment' & столбцы (product_id,comment,comment_id).

Я должен обновить столбец "комментарий" только в том случае, если комбинация столбцов (product_id и comment_id) уже присутствует, иначе вставьте во все три столбца. Например:

product_id     comment     comment_id  
Ac2108         fixed          5  
Ac7108         configure      3  
As2108         fixed          5  

так вот, если (Ac2108 и 5) присутствует, то для той же строки мне нужно изменить комментарий с 'fixed' в 'configure' или, если нет, то вставьте во все столбцы. Столбцы должны быть вставлены из другой таблицы "static_comment",
Я пробовал запрос слияния, но он обновляет и другие строки в таблице "basic_comment".

MERGE 
INTO  basic_comment a 
USING static_comment b
ON  ( a.product_id = b.product_id and a.comment_id = b.comment_id )    
WHEN MATCHED 
THEN 
 UPDATE
SET a.comment = b.comment
WHEN NOT MATCHED
THEN 
INSERT ( a.product_id
, a.comment
, a.comment_id
VALUES ( b.product_id
, b.comment
, b.comment_id);

1 ответ

Если возникнут проблемы со слиянием, можно сделать два отдельных оператора, очевидно, не так быстро, но если набор данных мал, он сделает

Update table
Set comment = ‘configure’
Where product_id is not null and comment_id is not null

Insert into table2(....,....)
Select comment_id, ‘static’
From table
Where not ( product_id is not null and comment_id is not null)
Другие вопросы по тегам