1

我有一张#temp包含订单详情的表格,例如

OrderID     CustomerID  DeliveredBy
1           10          12
2           13          14
3           15          14

我有一个@Orders 表变量(在这个阶段只包含特定的订单号 - 但没有来自 DeliveryDetails 的客户的 ID),其列:

OrderID     CustomerName    DeliveredByName
1
2
3

(这只是情况的一个例子)

我需要使用@Orders表中CustomerName,DeliveredByName的 ID更新#temp

Update @Orders
set 
    CustomerName = c.Name,
    DeliveredByName = d.Name
from @Orders o1
         join #temp t                on o1.OrderID = t.OrderID
    left join Customers c on o1.CustomerID = c.CustomerID    
    left join DeliveryDetails d on o1.DeliveredByID = d.DeliveredByID

但得到错误:

在预期条件的上下文中指定的非布尔类型表达式,靠近“更新”。

4

1 回答 1

2

由于您为 指定了别名,因此@orders您必须在更新子句中使用它,否则删除该别名。试试这个:

UPDATE o1   <-------- here use UPDATE o1 instead of UPDATE @orders
SET o1.CustomerName    = c.Name,
    o1.DeliveredByName = d.Name
FROM @Orders AS o1
INNER JOIN #temp          AS t ON o1.OrderID       = t.OrderID
LEFT JOIN Customers       AS c ON o1.CustomerID    = c.CustomerID    
LEFT JOIN DeliveryDetails AS d ON o1.DeliveredByID = d.DeliveredByID;
于 2013-02-13T07:07:04.920 回答