0
我想「如果不存在其他INSERT,UPDATE」爲現有值的語句在一個表具有以下模式創建:生成腳本與更新,如果存在其他INSERT(MSSQL)
if exists (select 1 from TABLE_NAME where Ident_Column=Identifier)
update TABLE_NAME set
Column1=Value1,
Column2=Value2,
Column3=Value3,
...
where Ident_Column=Identifier
else
insert into TABLE_NAME (Column1, Column2, Column3, ...)
select Value1, Value2, Value3, ...
go
我嘗試使用MSSQL Mangement Studio(2014)腳本生成器,但沒有按照需要得到輸出。
編輯:期望的輸出是SQL語句,@Rusland K. & Nick.McDermaid。我想使用腳本生成器爲表TABLE的每個(或選定)行生成此SQL代碼。 標識符不是一個變量,它是一個值。 如果列Ident_Column中的標識符存在,則相應地設置該行(值1-n)。如果沒有在任何行中找到該標識符,請相應地創建一個現在的行。 @bmsqldev:這是整個代碼(只是取代了實際的列/表名稱和具體的值)
其實我不明白是什麼導致了這裏的誤解。如果你能說出來,我很樂意學習。編輯2:我編寫了一個小腳本,根據這種模式轉換MSSQL管理工作室的腳本輸出,這花了我約2個小時。
使用合併來做你的要求 – bmsqldev
不需要。你可以用'MERGE'來做到這一點。或者乾脆刪除'IF'並在'UPDATE'和'INSERT'子句中使用正確的'WHERE'語句。速度將與MERGE相同。您也可以通過源查詢或TVP將目標表加入到所有行的MERGE/UPSERT中 –
需要什麼輸出? p.s.合併太車... –