我有下面的表格,机器人和机器人。我想将robot中的datetested字段迁移到相应robot的robottestresult中的datetested字段。
Robot RobotTestResult
-------- ---------------
RobotID RobotTestID (Identity)
DateTested RobotID
DateTested
对于任何机器人,robottestresult表中最多有一个条目
有些机器人在robottestresult表中会有相应的条目,我可以用一个简单的连接来更新这些值:
UPDATE RTR
SET RTR.DateTested = r.DateTested
FROM [dbo].[RobotTestResult] RTR
JOIN [Robot] r
ON RTR.RobotID = r.RobotID;
问题在于robottestresult表中没有条目的机器人。我能想到的唯一方法是使用光标遍历没有rtr条目的每个robot并进行插入,但我觉得必须有一种更有效的方法。
编辑以添加:如果robot中不存在datetested值,则不应插入robottestresult。
3条答案
按热度按时间m3eecexj1#
我更喜欢使用
NOT EXISTS
因为它符合问题的逻辑。9avjhtql2#
我们也可以使用merge语句实现同样的功能。我个人喜欢@dale k解决方案。但是,在tsql中添加此选项作为附加选项。
gg0vcinb3#
又快又脏的解决方案。基本上,如果左连接未找到匹配项,则将该值添加到robottestresults中