Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从另一个表中的特定行更新多个列_Sql_Sql Server_Tsql_Join - Fatal编程技术网

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

Sql 从另一个表中的特定行更新多个列,sql,sql-server,tsql,join,Sql,Sql Server,Tsql,Join,我见过从一个联接更新多行的示例,但是在这种情况下,有多个匹配的行是由一个联接生成的,我需要一个特定的行(最早的UpdateDate行) 表格示例: [机器人] RobotNumber RobotName RobotColor UpdatedDate 1 XA01 Red 01/01/2020 2 B1205 Purple

我见过从一个联接更新多行的示例,但是在这种情况下,有多个匹配的行是由一个联接生成的,我需要一个特定的行(最早的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


我尝试过使用联接和子查询的方法,但无法获得正确的语法和条件。

您可以使用
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;