У меня есть таблица источникаSQL Merge Ошибка: Оператор MERGE попытался UPDATE или DELETE
select 54371 Id, 'foo' [CreateBy], '2016-10-24 09:29:18.548'[CreateDate], 'foo'[UpdateBy], '2016-10-24 09:29:18.548'[UpdateDate], 'E'[MT], 185761[MID], 3[BGID]
union
select 54372, 'foo', '2016-10-24 09:30:18.548', 'foo', '2016-10-24 09:30:18.548', 'E', 185761, 2
и таблицу назначения
select 54379 Id, 'foo' [CreateBy], '2016-10-24 09:29:18.548'[CreateDate], 'foo'[UpdateBy], '2016-10-24 10:29:18.548'[UpdateDate], 'E'[MT], 185761[MID], 3[BGID]
То, что я хочу, чтобы соответствовать на основе MT, MID и
- Вставить, если не существует
- обновление, если BGID соответствует
- удалить, если BGID не соответствует
Когда я использую SQL Merge заявление я получаю ошибку
'Слить оператор пытался UPDATE или DELETE в той же строке несколько раз. Это происходит, когда целевая строка соответствует более чем одной строке источника. Оператор MERGE не может обновлять/удалять одну и ту же строку целевой таблицы несколько раз. Уточните положение ON, чтобы обеспечить целевой строки соответствует более одного источника строки, или используйте предложения GROUP BY для группировки источник rows.`
Мой Merge подобен этому
MERGE
FooBar AS target
USING
(
SELECT
E.[Id],
E.[CreateBy],
E.[CreateDate],
E.[UpdateBy],
E.[UpdateDate],
E.[MT],
E.[MID],
E.[BGID]
FROM @FooBar E
) AS source
ON
source.MID = target.MID
AND source.MT = target.MT
WHEN MATCHED and target.[BGID] = source.[BGID] THEN
UPDATE SET
target.[UpdateBy] = Source.[UpdateBy]
,target.[UpdateDate] = Source.[UpdateDate]
When Matched and source.BGID <> target.BGID THEN
DELETE
WHEN NOT MATCHED THEN
INSERT([CreateBy]
,[CreateDate]
,[UpdateBy]
,[UpdateDate]
,[MT]
,[MID]
,[BGID])
VALUES
(
Source.[CreateBy]
,Source.[CreateDate]
,Source.[UpdateBy]
,Source.[UpdateDate]
,Source.[MT]
,Source.[MID]
,Source.[BGID]
);
Что же я отсутствует?
Удаленный тег 'MySQL', так как вопрос связан с' SQL Server'. Пожалуйста, не используйте ненужные теги при отправке вопроса. – Rahul
Отметить эту должность как только http://stackoverflow.com/questions/1434028/issues-with-sql-server-merge-statement – Rahul