当前位置: 首页 > 知识库问答 >
问题:

通过连接第三个表从第二个表更新表值

曾珂
2023-03-14

我有三张桌子,桌子A,桌子B和桌子C

我想将数据从TableA列DateA迁移到TableB列DateB,仅当表B中的date字段为空时(我不想覆盖任何现有数据)

我需要使用TableC连接TableA和TableB,以匹配应按其RobotNumber更新的A行和B行。

表格a

RobotNumber         DateA
11                  12/12/2015
12                  01/05/2018
13                  05/03/2019
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)

共有1个答案

孙岳
2023-03-14

我将首先删除not in:

UPDATE TableB 
    SET TableB.DateB = TableA.DateA
    FROM TableB JOIN
         TableC c 
         ON TableB.RobotID = c.RobotID JOIN
         TableA a 
         ON a.RobotNumber = c.RobotNumber
    WHERE TableB.DateB is null;

然后,您还应该在表C(RobotID)表A(RobotNumber,DateA)上拥有索引。

 类似资料:
  • 以下是我现在的声明: 它工作得很好,但会产生一些主键冲突。所以,当输入新行时,我想做的是: 新建主键+佣金表数据+建议书表数据 有什么想法吗?

  • 如果我有三个表: > 列出所有未被查看的正确方法是什么?此查询是否正确? 按< code>user_id列出所有< code >帖子及其“查看状态”如何? 您是否也可以推荐一个很棒的(用户友好的、非极客的)资源来提高我对LEFT JOIN、CROSS JOIN和(正常连接?从帖子、视图中选择*)的理解? 谢谢大家!

  • 我希望表的所有都具有,其被的重写。 结果应该变成: 我可以通过单独的查询获得它,例如: 第二个查询的结果应该合并到第一个查询中,这样:“当第二个表中的boolean为TRUE时,用第一个表覆盖第二个表的结果” role_cap和enduser_cap表中的正确值都应该成为结果的一部分。但是,如果对于相同的user_cap_id,role_cap有FALSE条目,而enduser_cap有TRUE条

  • 我有三张桌子: 用户id、名称 订单id,日期 状态id,名称 并将透视表定义为: order_userorder_idstatus_iduser_idcreated_at 所以“user_id”是pivot中的一个额外列。 我的订单型号有: 我可以通过以下方式访问用户id: 但无法计算如何获取用户“名称”? 我是否可以在订单模型的“statuses()”方法返回中以某种方式“LEFT JOIN”

  • 在Spring JPA中有没有一种方法可以连接两个表而不使用关联类。 存储库:

  • 我有三个表:user、home、user_home。 在代码中,我有实体用户和主页。 但是我收到下一条消息:“QuerySyntaxException:UserHome没有映射”