我想知道是否有一種方法可以在一個sql語句中執行下列操作。sql - 檢查是否存在條目,如果更新,是否不插入
我解析一個csv文件,將產品插入到數據庫中。是否有一種方法,我可以檢查一個表中的條目是否與X等於N,如果是的話更新其餘的列其他列插入它?
問候
菲爾
我想知道是否有一種方法可以在一個sql語句中執行下列操作。sql - 檢查是否存在條目,如果更新,是否不插入
我解析一個csv文件,將產品插入到數據庫中。是否有一種方法,我可以檢查一個表中的條目是否與X等於N,如果是的話更新其餘的列其他列插入它?
問候
菲爾
這種類型的操作有時被稱爲 「UPSERT」。 SQL標準的做法是使用MERGE
語句,但不幸的是它尚未廣泛實現。
一些數據庫已經添加了自己的方式來做到這一點,比如非標準的MySQL擴展REPLACE
和INSERT ... ON DUPLICATE KEY UPDATE
。
MERGE語句會幫助您,但僅適用於SQL Server 2008 R2。否則,您需要將其視爲漸變維度,並將數據放入臨時表中,並比較或使用集成服務包來完成此工作。
這不僅是SQL Server。 Oracle和DB2也支持MERGE語句 –
實際上,它也是在SQL Server ** 2008 **(非R2)中。 –
會這樣的工作嗎?
if(update myTable where x='n')
else{
insert into myTable(x,y,z) values(1,2,3)
}
無論更新查詢是否會運行,並且如果無法更新該記錄,將導致它執行插入操作,將返回false。
您使用的是什麼RDBMS? –