代码之家  ›  专栏  ›  技术社区  ›  going

基于所选的另一行更新行而不声明变量

  •  4
  • going  · 技术社区  · 14 年前

    如何基于另一行更新行。

    我想更新这些:

    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
    

    目前,我只更新域一,使用:

    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
    

    有没有一种方法可以在不必声明所有变量的情况下对每个字段执行此操作?

    1 回复  |  直到 14 年前
        1
  •  5
  •   Lucas Voooza    10 年前

    让我们看看,在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
    

    额外的小费。通过打开显示表的“对象资源管理器”窗格,然后单击加号(+)以显示表下的文件夹,可以在SSMS中获取表的所有字段的列表(以逗号分隔)。然后单击Columns文件夹并将其拖到查询窗格中。