У меня есть одна таблица, где я хочу проверить, существует ли запись, оставить ее в покое, если не вставить новую строку и обновить предыдущую строку. Мне интересно, могу ли я использовать слияние здесь, как показано ниже?Объединить с той же целевой и исходной таблицей
CREATE TABLE a
(keycol INT PRIMARY KEY,
col1 INT NOT NULL,
col2 INT NOT NULL,
col3 INT NOT NULL);
INSERT INTO a VALUES (1,0,0,0),(2,0,0,0);
MERGE INTO a
USING select 1 from a where col1 = 3
WHEN NOT MATCHED THEN
UPDATE SET
col2 = 2,
col2 = 2,
col3 = 2
where col1 = 3
WHEN NOT MATCHED THEN
INSERT (keycol, col1, col2, col3)
VALUES (4, 0, 0, 0)
Спасибо,
Должно быть, что первое условие 'КОГДА MATCHED' - когда' НЕ MATCHED' не будет иметь строку для обновления и нужно будет вставить – JNK
пожалуйста, прочитайте вопрос, когда ничего совпадения, которые я хочу вставить и обновить – user570715
Я прочитал его, и ваше предлагаемое решение - нонсенс. Когда нет совпадения, вы хотите обновить ** что **? Нет строки для обновления. Вы хотите обновить каждую другую строку в таблице? – JNK