SQL检查批量插入前表中是否存在记录

时间:2016-06-22 18:02:02

标签: sql sql-server stored-procedures insert bulkinsert

我目前有一个存储过程,可以从.csv文件中执行批量插入名为“TomorrowPatients”的表。执行批量插入时,我需要确定添加的记录是否已存在于表中,如果是,请不要添加记录。如果记录不存在,那么我需要将它附加到表中。什么是最有效的方法?任何帮助将不胜感激。

编辑:我创建了一个名为“TomorrowPatients_Temp”的临时表。我正在尝试使用此表来确定要插入的记录。

1 个答案:

答案 0 :(得分:0)

将整个数据插入临时表,比如#TempData。然后使用以下代码:

INSERT INTO TommorowPatients
SELECT * FROM #TempTable TT
LEFT JOIN TommorowPatients TP ON TT.PatientId = TP.PatienId
    AND TT.PatientName = TP.PatientName
    AND TT.PatientSSN = TP.PatientSSN
WHERE TP.PatientId IS  NULL

其中PatientId是TommorowPatients表的主键。

请勿使用LEFT JOIN添加“RoomNumber”列,如:TT.RoomNo = TP.RoomNo。这样,即使房间号码发生变化,也不会插入新数据,因为我们仅根据患者特定数据加入。