我有3张table,A,B和C
我想将数据从tablea column datea迁移到tableb column dateb,前提是表b中的date字段为null(我不想覆盖任何现有数据)
我需要使用tablec连接tablea和tableb,以匹配a和b行,这些行应该由它们的robotnumber更新。
表
RobotNumber DateA
11 12/12/2015
12 01/05/2018
13 05/03/2019
表B
RobotID Date
2 null
3 07/01/2018
4 null
表C
RobotNumber RobotID
11 2
12 3
13 4
我尝试联接表并按此方式进行更新,但查询超时:
UPDATE TableB
SET TableB.DateB = TableA.DateA
FROM TableB
inner join TableC c on TableB.RobotID = c.RobotID
inner join TableA a on a.RobotNumber = c.RobotNumber
where TableB.RobotID not in (select RobotID from TableB where DateB is not null)
2条答案
按热度按时间vbopmzt11#
我会从摆脱
NOT IN
:然后,还应该在
TableC(RobotID)
以及TableA(RobotNumber, DateA)
.u59ebvdq2#
确保在中使用的列上有索引
JOIN
条款。换句话说,您至少应该在
RobotID
中的列TableB
以及TableC
在街上RobotNumber
中的列TableA
以及TableC
.另外,如果
RobotID
是中的主键TableB
,您可以更改WHERE
最后一行中的条件:WHERE TableB.DateB IS NOT NULL