如何根据另一行更新行。
我想更新这些:
SELECT field_one, field_two, field_three
FROM some_table WHERE user_ID = 296
使用此SELECT中的值:
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
有没有办法在每个字段中执行此操作而无需DECLARE所有变量?
答案 0 :(得分:5)
让我们看看,在FoxPro中你可以使用SCATTER和GATHER: - )
但是在这里,你可以这样做:
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
额外提示。您可以通过打开显示表格的对象资源管理器窗格,在SSMS中获取表格的所有字段列表,逗号分隔,然后单击加号(+)以显示表格下的文件夹。然后只需单击Columns文件夹并将其拖到查询窗格中。