通过连接字符串

时间:2017-04-10 19:29:00

标签: sql-server tsql

是否可以从多行更新行?

我正在尝试通过连接找到的字符串来更新我的列,但它不起作用。

我正在尝试连接sord.type列中的所有sor.type sord.orderid = sor.orderid

查询:

update sor
set sor.type = sor.type + " " + (select sord.type
                                 from sales.OrderDetails sord
                                 where sord.orderid = sor.orderid)
from sales.Orders sor 

我想得到总和

错误:

  

Msg 512,Level 16,State 1,Line 1
  子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

1 个答案:

答案 0 :(得分:1)

没有样本数据,我不确定sor.type + ' ' +是否必要

在没有更新的情况下尝试以下操作。如果您对结果感到满意,请删除顶部选择并取消注释更新

Select 
--update sor set sor.type =
  sor.type + ' ' + (Select Stuff((Select Distinct ' ' +sord.type 
                                                From  sales.OrderDetails sord 
                                                Where sord.orderid = sor.orderid 
                                                For XML Path ('')),1,1,'') )
from sales.Orders sor 

同样,在没有看到样本数据的情况下,可能会有更高效的方法,即不同和加入