sql - 根据选择的另一行更新行,无需声明变量

标签 sql sql-server sql-server-2005 tsql

如何根据另一行更新行。

我想更新这些:

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/

相关文章:

php - 如何从 mysql 和 PHP 中引用的表中选择字段

python - 在 python 中使用 connectorx 连接 MS SQL Server

sql-server - SQL Server 递归 CTE 是否被视为循环?

SQL根据多列值过滤搜索

sql - 从 sql server 中的 2 个表中获取不同的列名

sql-server - sql server合并两个表中的值

sql - 如何将链接服务器上运行的存储过程的输出发送到 csv 文件中?

php - 按顺序选择事件数据

php - MySQL 获取依赖最新插入的最新日期

.net - SQL 查询将文本数据存储在 Varbinary(max) 中