Sql server 更新和设置联接表和派生表

Sql server 更新和设置联接表和派生表,sql-server,Sql Server,我想更新SalesOrderNumber的地址L1、地址L2和城市: 收件人:地址:1:4普卢姆街。 地址L2:Birkenhead 城市:奥克兰 我的代码是: SELECT TOP (200) dbo.SalesOrder.SalesOrderID, dbo.SalesOrder.SalesOrderNo, dbo.SalesOrder.CustomerID, dbo.qryAddress.AddressL1, dbo.qryAddress.AddressL2, dbo

我想更新SalesOrderNumber的地址L1、地址L2和城市:

收件人:地址:1:4普卢姆街。 地址L2:Birkenhead 城市:奥克兰

我的代码是:

SELECT
    TOP (200) dbo.SalesOrder.SalesOrderID, dbo.SalesOrder.SalesOrderNo,
    dbo.SalesOrder.CustomerID, dbo.qryAddress.AddressL1,
    dbo.qryAddress.AddressL2, dbo.qryAddress.City
FROM
    dbo.SalesOrder
    LEFT OUTER JOIN dbo.qryAddress ON dbo.SalesOrder.AddressID = dbo.qryAddress.AddressID
WHERE
    (dbo.SalesOrder.SalesOrderNo = 'so18050653')

要更新数据库中的数据,请使用update命令。很好的参考和子查询的外观。对于您的情况,您需要在WHERE子句上使用一个子select命令,以便从SalesOrderNo键中获取AddressID。请注意,这将更新与SalesOrderNo关联的任何地址。最好先单独运行subselect,看看它返回什么。它应该返回一个AddressID

UPDATE qryAddress a
SET AdddressL1 = '4 Pullum St',
   Addressl2 = 'Birkenhead',
   City='Auckland'
WHERE a.AddressID IN (SELECT s.addressID FROM SalesOrder s WHERE SalesOrderNo='so18050653')

您可以尝试以下查询

 UPDATE A 
    SET A.AdddressL1 = '4 Pullum St',
       A.Addressl2 = 'Birkenhead',
       A.City='Auckland' 
    FROM dbo.qryAddress A
    INNER JOIN dbo.SalesOrder S ON A.AddressID = S.AddressID
WHERE S.SalesOrderNo = 'so18050653'

谢谢,但我收到一个错误,上面写着“更新或插入视图或函数QryAddress失败,因为它包含派生字段。视图是从一些源表创建的。请查看是否可以找到视图的源表,并直接更新它们。”。