Sql 从另一个表中的特定行更新多个列
我见过从一个联接更新多行的示例,但是在这种情况下,有多个匹配的行是由一个联接生成的,我需要一个特定的行(最早的UpdateDate行) 表格示例: [机器人]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
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;