Dla przypadku, gdy pożądane jest, aby zaktualizować lub wprowadzeniu wszystkich wartości na raz, a nie tylko na jednej płycie, że stosuje się ten fragment
1-ty Uruchom skrypt aktualizacji
UPDATE Table1
SET OPIS = T1.OPIS
FROM
Table1 AS T
INNER JOIN
Table2 AS T1
ON
T.col = T1.col;
Następnie wykonaj skrypt insert
INSERT INTO Table1
SELECT * FROM
(
SELECT T1.* Table2 AS T1
LEFT JOIN Table1 AS T2 ON (T2.col = T1.col)
WHERE T2.col IS NULL
) AS T;
Mam nadzieję, że ktoś uznał to za przydatne.
Odpowiednikiem tego w MySQL (w niektórych przypadkach) jest mniej więcej tak:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
Ktoś może okazało się, że jest to związane z artykułem w Solutions for INSERT OR UPDATE on SQL Server
Zaktualizowana wersja użyciu MERGE (Transact-SQL):
DECLARE @USER_ID AS INT=76;
DECLARE @TYPE AS NVARCHAR(MAX)='set.global';
DECLARE @FKEY AS NVARCHAR(MAX)='21';
DECLARE @DATA AS NVARCHAR(MAX)='test';
begin tran
MERGE UserData
USING (SELECT @USER_ID, @TYPE, @FKEY, @DATA) AS Source([UserId], [Type], [FKey], [Data])
ON (UserData.[UserId] = Source.[UserId] AND UserData.[Type] = Source.[Type] AND (UserData.[FKey] = Source.[FKey] OR (Source.[FKey] IS NULL AND UserData.[FKey] IS NULL)))
WHEN MATCHED
THEN
UPDATE SET [Data] = Source.[Data]
WHEN NOT MATCHED BY TARGET THEN
INSERT
([UserId]
,[Type]
,[FKey]
,[Data])
VALUES
(Source.[UserId]
,Source.[Type]
,Source.[FKey]
,Source.[Data]);
commit tran
Którą wersję programu SQL Server używasz? – RobS