3

테이블에 값을 동기화하기 위해 MySQL 데이터베이스와 SQL Server 2008 R2 사이에 브리지를 작성하려고합니다. SQL Server 데이터베이스에 다중 삽입 값이 붙어 있습니다.SQL 서버 : 다중 INSERT with MERGE

INSERT INTO table (column1, column2) 
VALUES(value1, value2), (value3, value4) 
ON DUPLICATE KEY UPDATE column2 = VALUES(value2); 

MERGE와 SQL 서버에 여러 개의 삽입을 수행하는 방법 방법이 있나요 : 일반적으로 MySQL은 내가 좋아하는 쿼리를 사용할 수 있습니까? 답변

답변

7
MERGE INTO YourTable T 
    USING (VALUES ('value1', 'value9'), 
        ('value3', 'value4')) AS S (column1, column2) 
     ON T.column1 = S.column1 
WHEN MATCHED THEN 
    UPDATE 
     SET column2 = S.column2 
WHEN NOT MATCHED THEN 
    INSERT (column1, column2) VALUES (column1, column2); 
+0

환상적입니다. 고맙습니다 –

0

에 대한

감사 확실하지 난 당신의 질문은 정확히 제대로 있지만, 다음과 같이 T-SQL에서 MERGE 문을 사용할 수있는 경우 :

  1. 를 소스의 항목은 항목과 일치하지 않는 경우 지정된 필드에있는 대상에서 대상에 삽입하십시오.
  2. 소스의 항목이 지정된 필드의 대상 항목과 일치하는 경우 대상의 다른 필드를 source의 해당 값으로 업데이트하십시오. 귀하의 경우에는

는 병합은 다음과 같이 될 것이다 :

merge yourtable as target 
using 
(select value1 a, value2 b 
union 
select value3 a, value4 b) as source 
on target.column1 = source.a 
when matched and target.column2 <> source.b 
then update 
set target.col2 = source.b 
when not matched by target 
then 
insert (column1, column2) values (source.a, source.b); 

이 예는 하드 코드 된 값을 사용하지만, 당신은뿐만 아니라 다른 테이블에서 삽입하는 때 작동합니다.