【问题标题】:SQL: Lookup values in another table and update themSQL:在另一个表中查找值并更新它们
【发布时间】:2020-07-29 23:53:25
【问题描述】:

我有两张桌子table1table2

table1              table2
======              ======
varA     varB       varA     varC
-----------------   ----------------
A        ?          A        3
A        ?          B        2
B        ?          C        1
C        ?

如何使用table2 查找table1 中的值varB 并将它们插入table1?结果应该是:

varA    varB
-----------------
A       3
A       3
B       2
C       1

【问题讨论】:

    标签: mysql sql join sql-update


    【解决方案1】:

    考虑update ... join ... 语法:

    update table1 t1
    inner join table2 t2 on t1.vara = t2.vara
    set t1.varb = t2.varc
    

    请注意,要使其正常工作,vara 必须是 table2 中的唯一键(否则,查询将无法识别 update 的唯一源行)。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      update table1 a
      join table2 b on b.vara = a.vara
      set a.varb = b.varc
      

      结果:

      vara  varb
      ----  ----
      A        3
      A        3
      B        2
      C        1
      

      样本数据:

      create table table1 (vara varchar(6), varb int);
      
      insert into table1 (vara, varb) values ('A', null), ('A', null),
        ('B', null), ('C', null);
      
      create table table2 (vara varchar(6), varc int);
      
      insert into table2 (vara, varc) values ('A', 3), ('B', 2), ('C', 1);
      

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-13
        • 1970-01-01
        相关资源
        最近更新 更多