【问题标题】:SQL INSERT INTO SELECT - existing rowsSQL INSERT INTO SELECT - 现有行
【发布时间】:2014-04-23 18:55:04
【问题描述】:

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

当使用 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

【问题讨论】:

  • 您对两个表中都有 CUSTOMER_NAME 感兴趣。在客户表中只包含 CUSTOMER_NAME 对我来说更有意义。
  • 如果我理解正确,输入customer_id,然后显示customer_name..

标签: sql sql-server select join insert


【解决方案1】:

当您想要更新现有行的某些字段时,您必须使用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'

如果没问题告诉我,如果我不明白你的答案也告诉我;)

【讨论】:

    【解决方案2】:

    如果你变得更高级,可以使用MERGE 声明:http://msdn.microsoft.com/en-us/library/bb510625.aspx

    如果您不是 sql 超级奇才,请坚持使用 INSERTUPDATE ...我通常会这样做。

    【讨论】:

      猜你喜欢
      • 2012-01-23
      • 2023-02-09
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      相关资源
      最近更新 更多