如何根据另一行更新行。
我想更新这些:
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
有没有一种方法可以对每个字段执行此操作,而无需声明所有变量?
最佳答案
让我们看看,在 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
额外的小费。您可以通过打开显示表的对象资源管理器 Pane ,在 SSMS 中获取表的所有字段的列表(以逗号分隔),然后单击加号 (+) 以显示表下的文件夹。然后只需单击“列”文件夹并将其拖动到查询 Pane 即可。
关于sql - 根据选择的另一行更新行,无需声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209982/