2011-09-28 76 views
0

我想知道是否有一種方法可以在一個sql語句中執行下列操作。sql - 檢查是否存在條目,如果更新,是否不插入

我解析一個csv文件,將產品插入到數據庫中。是否有一種方法,我可以檢查一個表中的條目是否與X等於N,如果是的話更新其餘的列其他列插入它?

問候

菲爾

+5

您使用的是什麼RDBMS? –

回答

3

這種類型的操作有時被稱爲 「UPSERT」。 SQL標準的做法是使用MERGE語句,但不幸的是它尚未廣泛實現。

一些數據庫已經添加了自己的方式來做到這一點,比如非標準的MySQL擴展REPLACEINSERT ... ON DUPLICATE KEY UPDATE

1

MERGE語句會幫助您,但僅適用於SQL Server 2008 R2。否則,您需要將其視爲漸變維度,並將數據放入臨時表中,並比較或使用集成服務包來完成此工作。

+1

這不僅是SQL Server。 Oracle和DB2也支持MERGE語句 –

+0

實際上,它也是在SQL Server ** 2008 **(非R2)中。 –

0

會這樣的工作嗎?

if(update myTable where x='n') 
else{ 
insert into myTable(x,y,z) values(1,2,3) 
} 

無論更新查詢是否會運行,並且如果無法更新該記錄,將導致它執行插入操作,將返回false。

相關問題