INAD JOIN在UPDATE OUTPUT中的一个t-sql查询中

kat*_*roh 16 sql t-sql sql-server

需要INNER JOIN UPDATE OUTPUT返回的结果集与另一个表并返回结果.可能吗?

这是一个小例子:

CREATE TABLE [dbo].[Customers]
(   
   [CustomerId] [int],   
   [CustomerName]  [nvarchar](50)
)
GO

CREATE TABLE [dbo].[Orders]
(   
   [OrderId] [int],   
   [OrderName]  [nvarchar](50)
)
GO

CREATE TABLE [dbo].[CustomerOrders]
(   
   [CustomerId] [int],   
   [OrderId]  [int]
)
GO

INSERT INTO CustomerOrders (CustomerId, OrderId) VALUES (1, 1)
INSERT INTO CustomerOrders (CustomerId, OrderId) VALUES (1, 2)
INSERT INTO CustomerOrders (CustomerId, OrderId) VALUES (2, 1)
GO
Run Code Online (Sandbox Code Playgroud)

需要在CustomerOrders表上更新OrderId并返回客户的名称,所有这些都是一次性完成.到目前为止,我只能返回CustomerIds:

UPDATE CustomerOrders SET OrderId=NULL 
OUTPUT Deleted.CustomerId
WHERE OrderId='1'
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 27

TSQL/SQL Server 2005+在UPDATE子句中支持JOIN - 请参阅文档:

UPDATE CUSTOMERORDERS
   SET orderid = NULL
OUTPUT c.customername
  FROM CUSTOMERORDERS co
  JOIN CUSTOMERS c ON c.customerid = co.customerid
Run Code Online (Sandbox Code Playgroud)