Обновлять столбец, только если присутствуют значения двух столбцов (комбинации обоих), иначе вставить все значения в БД 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)