Sql server 2008 更新表而不是插入到

Sql server 2008 更新表而不是插入到,sql-server-2008,tsql,Sql Server 2008,Tsql,我从一个表中选择数据,如果该表中的数据不存在,则将其插入另一个表中 DECLARE @EmployeeNumber NVARCHAR(100) SET @EmployeeNumber = 'Emp001' IF EXISTS(SELECT E.EmployeeNumber FROM [databaseOne].[dbo].[Employee] E WHERE E.EmployeeNumber = @EmployeeNumber) BEGIN IF NOT EXISTS(SELECT UT.

我从一个表中选择数据,如果该表中的数据不存在,则将其插入另一个表中

DECLARE @EmployeeNumber NVARCHAR(100)
SET @EmployeeNumber = 'Emp001'
IF EXISTS(SELECT E.EmployeeNumber FROM [databaseOne].[dbo].[Employee] E WHERE E.EmployeeNumber =    @EmployeeNumber)
BEGIN
IF NOT EXISTS(SELECT UT.EmployeeNumber FROM UserTable UT WHERE UT.EmployeeNumber = @EmployeeNumber)
BEGIN
    INSERT INTO UserTable(EmployeeNumber, Surname)
    SELECT E.EmployeeNumber, E.Surname FROM [databaseOne].[dbo].[Employee] E
    WHERE E.EmployeeNumber = @EmployeeNumber
END
ELSE
  BEGIN
      --Update
  END
END
如果数据确实存在,我只想更新现有数据

如何更新而不是插入到


亲切问候

您应该使用
Merge
函数

您的查询看起来有点像这样:

MERGE UserTable AS Target
USING (SELECT E.EmployeeNumber, E.Surname FROM [databaseOne].[dbo].[Employee] E 
       WHERE EmployeeNumber = @EmployeeNumber) AS Source
ON Target.EmployeeNumber = Source.EmployeeNumber
WHEN MATHCED THEN 
     UPDATE SET Target.Surname = Source.Surname
WHEN NOT MATCHED THEN 
     INSERT (EmployeeNumber, Surname) VALUES (Source.EmployeeNumber,Source.Surname);

请参阅。

您应该使用
Merge
函数

您的查询看起来有点像这样:

MERGE UserTable AS Target
USING (SELECT E.EmployeeNumber, E.Surname FROM [databaseOne].[dbo].[Employee] E 
       WHERE EmployeeNumber = @EmployeeNumber) AS Source
ON Target.EmployeeNumber = Source.EmployeeNumber
WHEN MATHCED THEN 
     UPDATE SET Target.Surname = Source.Surname
WHEN NOT MATCHED THEN 
     INSERT (EmployeeNumber, Surname) VALUES (Source.EmployeeNumber,Source.Surname);

请参阅。

尝试以下内容:

UPDATE UserTable
SET
EmployeeNumber=E.EmployeeNumber
Surname=E.Surname
FROM UserTable
INNER JOIN [databaseOne].[dbo].[Employee] AS E
ON (E.EmployeeNumber = UserTable.EmployeeNumber )
WHERE UserTable.EmployeeNumber = @EmployeeNumber

尝试以下几点:

UPDATE UserTable
SET
EmployeeNumber=E.EmployeeNumber
Surname=E.Surname
FROM UserTable
INNER JOIN [databaseOne].[dbo].[Employee] AS E
ON (E.EmployeeNumber = UserTable.EmployeeNumber )
WHERE UserTable.EmployeeNumber = @EmployeeNumber
请看语句,它用于有条件地删除、插入或更新。请看语句,它用于有条件地删除、插入或更新。