比较两个表中的数据,如果数据不存在则插入,如果有数据则更新

时间:2012-03-12 13:24:28

标签: sql-server

我有两张桌子

SELECT * FROM dbo.VMM_Table_20120210     table 1

,此表的输出为

vehicle_Make        vehicle_model
---------------------------
01                   000
01                   111
01                   112
01                   113
01                   114
01                   115
01                   117
像这样,上表中有993条记录 和第二个表是

SELECT * FROM dbo.TBL_VEHICLE_MODEL_NEW

,此表的输出为

vmodel_id    vmodel_vmake_code       vmodel_type    vmodel_code
---------------------------------------------------------------------------
1             01                         t             7AV
2             01                         c             7AE

此表中有UPTO 1107记录

要求是我需要将vehicle_make与vmodel_vmake_code和vehicle_model与vmodel_code进行比较,如果第二个表中没有数据,我需要从第一个表中插入它,如果数据在那里我需要更新数据

我需要在程序中使用游标来循环每一行,请在这种情况下帮助我

1 个答案:

答案 0 :(得分:1)

我假设你的标签是针对SQL-Server的,而不是单独的SQL和Server,所以我建议MERGE操作。从问题中可以清楚地看到一些细节,比如匹配时要执行的更新,以及如何获取vmodel_type和vmodel_Code的值,所以我无法提供完美的答案,但这应该让你开始:

MERGE INTO dbo.TBL_VEHICLE_MODEL_NEW t 
USING dbo.VMM_Table_20120210 c 
ON t.vmodel_vmake_code = c.vehicle_Make AND t.vmodel_code = c.vehicle_model 
WHEN MATCHED THEN 
    UPDATE SET vmodel_type = 'A' -- CHANGE TO WHATEVER YOU WANT TO HAPPEN WHEN THE DATA EXISTS IN TABLE 2
WHEN NOT MATCHED THEN 
    INSERT VALUES (c.Vehicle_Make, c.Vehicle_Model, 't', '7AV');
    -- WHATEVER YOU WANT TO HAPPEN WHEN THE RECORD IN TABLE 1 DOES NOT EXIST IN TABLE 2

有关MERGE的更多信息,请参阅MSDN