2016-04-03 33 views
0

我嘗試從另一個表中插入數據。我想檢查所有行,如果行存在,只需更新,如果行不存在,則插入它(基於ID)。檢查數據是否存在更新else insert in SQL Server linked server

我有這個insert聲明:

insert into d1.dbo.UrlRecord (EntityId, EntityName, Slug, IsActive, LanguageId) 
    select 
     Id, 'Category', 
     REPLACE(Name, ' ', '-'), 1, 0 
    from d2.dbo.Category 

如果Id存在只是其他新的值更新插入

我想讓它動態地運行在SQL Server中使用的工作

+0

聽說過ME RGE'聲明? –

+0

不,我該怎麼做 –

+2

這裏你去** [MERGE](https://msdn.microsoft.com/en-in/library/bb510625.aspx)**。試一試 –

回答

0

請嘗試以下MERGE腳本

MERGE d1.dbo.UrlRecord TT 
USING  
(
SELECT 
Id,'Category' as EntityName,REPLACE(Name,' ','-') as Slug,1 as IsActive,0 as LanguageID 
FROM d2.dbo.Category 
)ST on TT.EntityId = ST.id 
WHEN NOT MATCHED THEN 
    INSERT (EntityId,EntityName,Slug,IsActive,LanguageId) 
    VALUES (ST.Id,ST.EntityName,ST.Slug, ST.IsActive,ST.LanguageID) 
WHEN MATCHED THEN 
    UPDATE 
    SET 
    TT.EntityName = ST.EntityName, 
    TT.Slug = ST.Slug, 
    TT.IsActive = ST.IsActive, 
    TT.LanguageId=ST.LanguageID 
    ;