Search code examples
sql-server-2005insert-select

INSERT INTO SELECT from UPDATE


I need to select some values from a table to be updated, and then update them right away. Furthermore, I need to insert one new record in a table for each updated record. To select records and update I am using a structure like

UPDATE TableA SET SomeField = 1 OUTPUT RecordID FROM TableA WHERE RecordID IN
(    
    SELECT TOP @Something RecordID FROM TableA    
)

Now, for the insert part, I would like to wrap the UPDATE statement into an INSERT INTO SELECT, thus taking advantage of the OUTPUT clause. However, SQL complains when I do

INSERT INTO TableA SELECT ( RecordID , GETDATE() ) FROM
(
    UPDATE TableA SET SomeField = 1 OUTPUT RecordID FROM TableA WHERE RecordID IN
    (        
        SELECT TOP @Something RecordID FROM TableA        
    )
)

Can't I do it all in one statement, even with the OUTPUT clause?


Solution

  • UPDATE TableA SET SomeField = 1 
    OUTPUT inserted.RecordID, GETDATE() into TableA (RecordID , DT)
    FROM TableA 
    WHERE RecordID IN
    (        
        SELECT TOP @Something RecordID FROM TableA        
    )
    

    Just not sure - you're trying to insert updated rows again ?