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
请看语句,它用于有条件地删除、插入或更新。请看语句,它用于有条件地删除、插入或更新。