2010-11-13 35 views
12

Cần INNER JOIN một resultset được trả về bởi UPDATE OUTPUT với một bảng và trả về kết quả. Có thể không?INNER JOIN trong vòng UPDATE OUTPUT trong một truy vấn t-sql

Dưới đây là một ví dụ nhỏ:

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 

Cần cập nhật OrderId trên bàn CustomerOrders và gửi lại tên của các khách hàng, tất cả trong 1 shot. Cho đến nay tôi chỉ có thể trở lại CustomerIds:

UPDATE CustomerOrders SET OrderId=NULL 
OUTPUT Deleted.CustomerId 
WHERE OrderId='1' 

Trả lời

20

TSQL/SQL Server 2005 + hỗ trợ tham gia trong mệnh đề CẬP NHẬT - xem documentation: thiên tài thuần túy

UPDATE CUSTOMERORDERS 
    SET orderid = NULL 
OUTPUT c.customername 
    FROM CUSTOMERORDERS co 
    JOIN CUSTOMERS c ON c.customerid = co.customerid 
+0

... o_O là soooo đơn giản!? ?? !! – kateroh

Các vấn đề liên quan