2015-03-19 103 views
0

我有很多的記錄,我想用JDBC火在MYSQLMSSQL批量插入查詢:執行SQL Server插入但如果重複的發現則進行更新

我的查詢是:INSERT INTO dentalitems SET itemID = ?, categoryid = ?, treatmentAreaID = ?, paintTypeID=?, procedurecode=? ON DUPLICATE KEY UPDATE itemID = ?, procedurecode = ?

上述查詢對於MYSQL工作正常 - 它會將記錄插入到表中,但如果有重複密鑰,則會執行更新。

我的問題是,我想在SQL Server中也執行上述操作,但上面的查詢僅適用於MYSQL。我搜索了一個SQL Server查詢,但我沒有找到任何。

在我的表itemIDprocedurecode是獨特的列。

我該如何用MSSQL Server做同樣的事情?

+0

參見http://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on -sql-server – Nytux 2015-03-19 10:49:35

+1

MERGE是您需要的關鍵字。 – 2015-03-19 10:49:59

回答

0

試試這個。 表位置(LocationId INT的PrimaryKey,LOCATIONNAME VARCHAR)

MERGE dbo.Location AS target 
USING (SELECT 100, 'Location Name') AS source (Id, Name) 
    ON (target.LocationId = source.Id) 
WHEN MATCHED THEN UPDATE SET LocationName = source.Name 
WHEN NOT MATCHED THEN INSERT (LocationId, LocationName) VALUES (source.Id, source.Name); 

- >

MERGE dbo.Location AS target 
USING (SELECT AId, AName FROM A) AS source (Id, Name) 
    ON (target.LocationId = source.Id) 
WHEN MATCHED THEN UPDATE SET LocationName = source.Name 
WHEN NOT MATCHED THEN INSERT (LocationId, LocationName) VALUES (source.Id, source.Name); 
+0

對不起,我不瞭解你。那麼,數據來自何處插入或更新? – 2015-03-19 11:04:33

+0

我有靜態數據,我想插入所有的記錄到表中,但如果表有特定的記錄,那麼我想更新它。我不想在兩者之間進行任何選擇 – Mahesh 2015-03-19 11:07:10

相關問題