我想把 upsert 查詢從 Oracle DB 遷移到 AzureSQL。下面顯示了一個Oracle準備好的陳述句,它從dual中取值并在DUMMY表上做了一個upsert操作。
MERGE INTO DUMMY a
USING (SELECT ? ID。
? 名稱。
? SIZE from dual) b
ON (a.ID = b.ID)
WHEN MATCHED THEN
UPDATE UPDATE
SET a.ID = b.ID。
a.NAME = b.NAME。
a.SIZE = b.SIZE
WHEN NOT MATCHED THEN
INSERT(a.ID,
a.NAME。
a.SIZE)
VALUES ( b.ID,
b.NAME。
b.SIZE)
我之前還要求從Oracle遷移到Postgres。這個是我要求的PostgreSQL版本。
uj5u.com熱心網友回復:
T-SQL的Upsert。
MERGE dbo.table_name AS [Target]
USING (SELECT 1 AS Id。'name' as t_name, 1 as size) AS [來源]
ON [Target].Id = [Source] .Id
WHEN MATCHED THEN
UPDATE SET [Target].name = [Source].t_name, [Target].size = [Source].size
WHEN NOT MATCHED THEN
INSERT (Id, name, size) VALUES ([Source].Id, [Source].t_name, [Source].size) 。
使用引數值來準備源表
DECLARE @id int = 1,
@name varchar(10) = 'ABC',
@size int = 5.
MERGE dbo.table_name AS [目標]
USING (SELECT @id AS Id。@name as t_name, @size as size) as [來源]
ON [Target].Id = [Source] .Id
WHEN MATCHED THEN
UPDATE SET [Target].name = [Source].t_name, [Target].size = [Source].size
WHEN NOT MATCHED THEN
INSERT (Id, name, size) VALUES ([Source].Id, [Source].t_name, [Source].size) 。
請從網址https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=13d32c099991dc3001fe4a8cd0b3fc77
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311044.html
標籤:
上一篇:我不能編輯表中的記錄
下一篇:SELECTFROMWHEREcharcolumnwithmixedstringandintegersvaluesthrowingconversionfailedconvertingvarcharto
