插入新值而不覆盖以前的值sql

时间:2012-10-26 17:44:05

标签: sql tsql sql-server-2005

我有一个表,我需要为450行添加信息,我可以用唯一的订单号识别每一行,只需要为每个订单号更新表中的4行。

update ordercontacts
set firstname = 'joe', lastname = 'smith', email = 'joesmith@smith.com', contacttypeid = 13
where orderid = 1284480

这只是取代了我的价值所以我必须解决这个问题

我也试过这个

insert into ordercontacts
(firstname, lastname, email, contacttypeid)
values
('joe', 'smith', 'jowsmith@smith.com', 13)
where orderid in (1284480)

但语法不正确,我不确定正确的语法是什么

我原以为这样的东西会起作用,但事实并非如此。谁能帮我吗?每个订单号都附有不同的联系人,我基本上希望最终结果是这样的:

order     firstname   lastname        email               contacttypeid
1284480   joe        smith      joesmith@smith.com         13
1284480   steve      andrews      steve@steve.com         11

我希望在每个订单号已存在的联系人之上添加新联系人。我所拥有的更新语法仅替换已存在的信息。

3 个答案:

答案 0 :(得分:1)

  

我希望在每个订单号已存在的联系人之上添加新联系人。

更新语句无法插入新行。您不能通过您发布的更新声明“添加新联系人”。

您需要insert声明。

答案 1 :(得分:1)

insert into ordercontacts
(orderid, firstname, lastname, email, contacttypeid)
values
(1284480,'joe', 'smith', 'jowsmith@smith.com', 13)

答案 2 :(得分:1)

insert into table_name (order, firstname, lastname, email, contacttypeid) 
values (1284480, 'joe'...);

您想要插入值而不是更新。更新将覆盖现有值的值,实际上它是“在id = y的行中替换x”。 Insert实际上会创建一个新行。