如果行已存在则更新表,如果数据集中不存在行,则插入时更新表

时间:2017-03-14 14:35:18

标签: sql sql-server tsql stored-procedures

我正在创建一个存储过程,我从SELECT语句插入到表中。该表有4列(例如Col1,Col2,Col3,Col4)。 Column1具有唯一值。和Column4是插入行的时间戳。

How table looks like in the first run (e.g. SP executed on teh 14032017). 我想要实现的是: -

1。)当我在以后运行存储过程时,可以说在20032017上,如果表中不存在Col1,我会将行添加到表中。

2.如果表格中已存在Col1,我会更新Col2和Col3的值,同时保持Col5的值不变。

因此,假设在存储过程的第二次运行中,select语句返回此数据集。 The dataset returned from the SELECT statement in a second run. 表格会这样显示, Col1值为7的行将插入表中。 Col1值为1,2和3的行更新了Col2和Col3的值,而Col4保持相同的值。

Update / Insert into the table on the second run of the SP. 可能我必须在存储过程中创建一个循环,其中处理SELECT语句返回的数据集中的每一行,但我是存储过程的新手,我遇到了困难。代码示例非常受欢迎,因此我可以更好地理解。

由于

1 个答案:

答案 0 :(得分:2)

我不确定通过select将数据插入表中是什么意思 - 合并需要源表,您可以从中更新/插入/删除目标。

尝试关注帮助

mov