无法在update语句中绑定多层标识符

时间:2013-03-13 09:01:38

标签: sql-server-2008-r2

我正在尝试在sql server 2008r2上执行此查询 -

SELECT @lUpd1 = 'UPDATE ts1cust.dbo.t_grgr_xwalk 
SET    xwalk.WEB = info.WEB,xwalk.AVIVIA = info.AVIVIA,xwalk.MSP = info.MSP,xwalk.QO   =    info.QO
FROM   ts1cust.dbo.t_plan_mspqo_info info, ts1cust.dbo.t_grgr_xwalk xwalk
WHERE  info.PLANID = xwalk.ID_471'

但得到以下提到的错误 -

 Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "xwalk.WEB" could not be bound.

3 个答案:

答案 0 :(得分:0)

您将表格t_grgr_xwalk设为xwalk,因此对于第一个表达式Update Table,您也应该使用xwalk

SELECT @lUpd1 = 'UPDATE xwalk
SET    WEB = info.WEB,
       AVIVIA = info.AVIVIA,
       MSP = info.MSP,
       QO = info.QO
FROM   ts1cust.dbo.t_plan_mspqo_info info, ts1cust.dbo.t_grgr_xwalk xwalk
WHERE  info.PLANID = xwalk.ID_471'

答案 1 :(得分:0)

你可以尝试下面: SELECT @ lUpd1 ='UPDATE ts1cust.dbo.t_grgr_xwalk xwalk SET xwalk.WEB = info.WEB,xwalk.AVIVIA = info.AVIVIA,xwalk.MSP = info.MSP,xwalk.QO = info.QO 来自ts1cust.dbo.t_plan_mspqo_info信息 WHERE info.PLANID = xwalk.ID_471'

答案 2 :(得分:0)

您不允许在SET子句中为列的分配方使用多部分标识符。

SELECT @lUpd1 = 'UPDATE xwalk
SET    WEB = info.WEB, --<-- no xwalk. here
       AVIVIA = info.AVIVIA,
       MSP = info.MSP,
       QO   =    info.QO
FROM   ts1cust.dbo.t_plan_mspqo_info info
   INNER JOIN
       ts1cust.dbo.t_grgr_xwalk xwalk
         ON  info.PLANID = xwalk.ID_471'

我还冒昧地用UPDATE顶部使用的别名替换表格引用,并转而使用ANSI JOIN而不是,