sql—从另一个表中的特定行更新多列

mpgws1up  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(261)

我见过从联接更新多个行的示例,但是在这种情况下,从联接产生的匹配行不止一个,我需要一个特定的行(最早的updateDate行)。
表格示例:
[机器人]

RobotNumber         RobotName    RobotColor      UpdatedDate   
1                   XA01         Red             01/01/2020
2                   B1205        Purple          02/02/2020
3                   ZP344        Orange          03/03/2020

[机器人音频]

RobotNumber         RobotName    RobotColor      UpdatedDate   
1                   XA01         Yellow          1/1/2019
1                   XA01         Red             2/2/2020

我想用robotaudittable中最早更新的日期行中的值(robotname,robotcolor)更新robotname xa01。
我尝试过使用联接和子查询的方法,但是我无法获得正确的语法和条件。

lymnna71

lymnna711#

你可以用 apply :

update r
    set r.robotname = rat.robotname,
        r.robotcolor = rat.robotcolor        
    from robot r cross apply
         (select top (1) rat.*
          from robotaudittable rat
          where rat.robotnumber = r.robotnumber
          order by rat.updateddate asc
         ) rat;

相关问题