У меня возникла ситуация, когда мне нужно вставить данные из таблицы1 в таблицу2. Перед установкой проверьте, существует ли определенная строка в таблице2.sql merge не будет за исключением инструкции обновления?
Условия следующие: 1) значения id и ahccs одинаковы в обеих таблицах, а затем ничего не делают. 2) значение id одинаково, но ahccs разные, затем установите флаг = 'z' и вставьте тот же идентификатор с новым значением ahccs.
Я использую SQLSERVER 2008 R2. Как я мог это достичь?
Возможно, мне понадобится нечто подобное.
DECLARE @table1 TABLE
(id int not null, ahccs int not null, info varchar(25), flag varchar(2))
DECLARE @table2 TABLE
(id int not null, ahccs int not null, info varchar(25), flag varchar(2))
INSERT INTO @table1
VALUES(1, 1223, 'et', 'X')
INSERT INTO @table1
VALUES(2, 321, 'et', 'X')
INSERT INTO @table1
VALUES(3, 134, 'et', 'X')
INSERT INTO @table1
VALUES(4, 168, 'et', 'X')
INSERT INTO @table1
VALUES(5, 123, 'et', 'X')
INSERT INTO @table2
VALUES(1, 1223, 'dt', 'y')
INSERT INTO @table2
VALUES(2, 456, 'dt', 'y')
INSERT INTO @table2
VALUES(3, 123, 'dt', 'y')
INSERT INTO @table2
VALUES(4, 193, 'dt', 'y')
--SELECT * FROM @table1
SELECT * FROM @table2
MERGE
INTO @table2 t2
USING @table1 t1
ON t2.id = t1.id
WHEN MATCHED AND t2.ahccs != t1.ahccs THEN
UPDATE
SET flag = 'z'
INSERT VALUES (t2.id, t1.ahccs, t1.info, 'l');
два вопроса я имею являются: 1) Объединить не поддерживает несколько шагов, я считаю. 2) Обновление не допускается в КОГДА НЕ Спрятанный чехол.
Просьба сообщить.
Thank you.
Необходимо указать, что вы хотите в качестве таблицы результатов на вашем примере. Конечно, это не позволяет вам «ОБНОВИТЬ», когда результаты не совпадают, потому что в какой строке вы собираетесь обновлять всю таблицу ?. Какое желательно поведение, когда строки совпадают ?, какие столбцы вам нужны для «PDATE»? – Lamak
Условия: 1) значения id и ahccs одинаковы в обеих таблицах, а затем ничего не делают. 2) значение id одинаково, но ahccs разные, затем установите флаг = 'z' и вставьте тот же идентификатор с новым значением ahccs. – OBL
Я обновил вопрос, допустил некоторые ошибки. – OBL