Mise à jour de la table de variables à partir de la table #temp – expression d'un type non boolean spécifié dans un context où une condition est attendue

J'ai une table #temp avec les détails de la command par exemple

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

J'ai une variable de table @Orders (qui à ce stade contient seulement des numéros de command spécifiques – mais pas d'ID de Customers of DeliveryDetails) avec des colonnes:

 OrderID CustomerName DeliveredByName 1 2 3 

(Ceci est juste un exemple de la situation)

J'ai besoin de mettre à jour la table @Orders avec le CustomerName,DeliveredByName avec les ID qui se trouvent dans la table #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 

Mais obtenez l'erreur:

Une expression de type non boolean spécifiée dans un context où une condition est attendue, près de 'update'.

Puisque vous avez spécifié un alias à @orders , vous devez l'utiliser dans la clause update, sinon supprimer cet alias. Essayez ceci à la place:

 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;