2010-11-17 45 views
4

如何基於另一行更新行。基於另一個未選擇DECLARE變量的單行更新行

我想更新這些:在這個SELECT

SELECT field_one, field_two, field_three 
    FROM some_table WHERE user_ID = 296 

的價值觀:

SELECT TOP 1 * field_one, field_two, field_three 
    FROM some_table 
    WHERE user_ID = 500 
ORDER BY ID 

目前我只使用更新field_one:

DECLARE @field_one nvarchar(1000) 

SELECT @field_one = field_one 
    FROM some_table WHERE user_ID = @copy_user_ID 

UPDATE some_table 
    set field_one = @field_one 
where user_ID = @user_ID 

是否有辦法在每個領域做到這一點,而不必聲明所有的變量?

+0

對於哪個版本的SQL Server? – 2010-11-17 22:54:05

回答

5

讓我們來看看,在FoxPro中您可以使用分散和收集:-)

但在這裏,你可以這樣做:

UPDATE Table1 
SET Field_one = a.Field_one, 
    Field_two = a.Field_two, 
    Field_three = a.Field_three 
FROM 
    (SELECT TOP 1 field_one, field_two, field_three 
     FROM some_table WHERE user_ID = 500 
     ORDER BY ID) a 
WHERE user_ID = 296 

對於一個額外的小費。您可以通過打開顯示錶格的對象資源管理器窗格,然後單擊加號(+)來顯示錶格下的文件夾,從而獲得表格中所有字段的列表(逗號分隔)。然後只需點擊列文件夾並將其拖到您的查詢窗格。

+0

非常好,除非你在派生表中不應該有*。 – 2010-11-17 23:02:15

+0

感謝G馬斯特羅斯,沒有接受。 – 2010-11-17 23:02:49

相關問題