我是很新的SQL,並正在尋找一些幫助者的一個程序,我想在SQL Server寫入2005SQL插入/更新表結果
我試圖插入或者用查詢結果更新表格。
我寫了插入罰款,並按預期工作,但如果記錄已存在,我想更新而不是插入。
我當前的代碼是:
INSERT INTO testTable
(field1 ,
field2 ,
field3,
field4,
field5 ,
)
select
'A000001'
table2.field2,
GETDATE() ,
GETDATE() ,
NULL ,
NULL ,
0
from
table1
INNER JOIN
table2 ON table1.field1 = table2.field1
INNER JOIN
table3 ON table2.field1 = table3.field1
INNER JOIN
table4 ON table3.field1 = table4.field1
WHERE condition
我想改變這種做法,如果field2
從選擇已經在testTable
那麼就會更新,而不是插入。我不確定如何做到這一點,因爲我可能會返回多個記錄。
我已經看一些其他的問題,但我沒有找到答案的問題(或我不知道如何更改多個記錄答案)
任何幫助表示讚賞!
感謝,
SQL Server 2008引入了'MERGE'。不幸的是,2008年之前只有很差的選項涉及多個語句(但應該可以通過搜索sql server 2005 merge或sql server 2005 upsert找到) –
我已經看過upserts,但這意味着我需要從我的語句再次,我不確定這是否正確。如果有多個記錄被返回,這會導致問題? – user2952149
如果查詢的select部分很貴,則可以將'select'的結果存儲在臨時表/表變量中。 –