Sql server 更新和设置联接表和派生表
我想更新SalesOrderNumber的地址L1、地址L2和城市: 收件人:地址:1:4普卢姆街。 地址L2:Birkenhead 城市:奥克兰 我的代码是: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
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失败,因为它包含派生字段。视图是从一些源表创建的。请查看是否可以找到视图的源表,并直接更新它们。”。