2016-04-03 34 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 
    ;