SQL INSERT INTO SELECT - 现有行

时间:2014-03-18 08:03:47

标签: sql sql-server select join insert

我已经查看了其他问题,但似乎无法找到答案。

当使用insert into select语句时,我的查询总是会创建新行。

但是,我想要一个脚本,将数据插入满足条件的特定行。

例如:我有两个表,订单和客户:

Orders:     
ORDER_Num     
CUSTOMER_ID  
CUSTOMER_NAME       
Order_Value

Customers: 
CUSTOMER_Num  
CUSTOMER_NAME    
Customer_Location

我想要它,所以当我输入Customer_NUM(这与CUSTOMER_ID相同)时,我可以运行一个脚本并获取客户名称并使用相应的名称填充该字段。

我可能会将其创建为存储过程。

我可以用基本格式编写脚本吗?

解决:

update ORDERS
set ORDERS.CUSTOMER_NAME = Customers.CUSTOMER_NAME
from orders
join Customers
on ORDERS.CUSTOMER_ID = Customers.CUSTOMER_Num

2 个答案:

答案 0 :(得分:2)

如果要更新某些exisitng行的字段,则必须使用UPDATE语句。想要创建新行时的INSERT语句。

我尝试用一​​些例子更好地解释:

您想要添加新客户

INSERT INTO customer (field_name) VALUES (values_to_put_in_fields) 

我们可以在您的INSERT中假设您不知道客户的文档编号,但是您知道一段时间后。

因此,您可以用这种方式编写UPDATE语句

UPDATE customer 
   SET document_no = 'mydoc' 
 WHERE customer_id = 'id_of_your_customer'

如果可以告诉我,如果我不明白你的回答也告诉我;)

答案 1 :(得分:1)

如果您获得更高级,则会出现MERGE声明:http://msdn.microsoft.com/en-us/library/bb510625.aspx

如果你不是一个sql super-wiz,那么坚持使用INSERTUPDATE ...我通常会这样做。