代码之家  ›  专栏  ›  技术社区  ›  BCH

从Select更新-语法和概念检查(mySQL)

  •  0
  • BCH  · 技术社区  · 6 年前

    我在MySQL中有以下查询,其工作方式与预期一致:

       SELECT * 
       FROM wa_tmp_listed A 
       INNER JOIN wa_list B 
       ON A.symbol = B.symbol  
    

    这将带回大约3500条记录。我要做的是将所有这些记录更新到 wa_list

    所以我相信这个查询应该能让我达到目的,但我一直遇到错误,所以我想问问是否有人对语法有建议,或者我在概念上是否有错:

    UPDATE `wa_list` 
    (SELECT * FROM `wa_tmp_listed` A INNER JOIN `wa_list` B ON A.symbol = B.symbol)
    SET field1 = A.field1, 
        field2 = A.field2, 
        field3 = A.field3, 
        field4 = A.field4, 
        field5 = A.field5, 
        field6 = A.field6, 
        field7 = A.field7, 
        field8 = A.field8, 
        field9 = A.field9, 
        field10 = A.field10
    WHERE A.field1 = B.field1 
    AND A.field2 = B.field2 
    AND A.field3 = B.field3;
    

    备注:

    1. A.symbol 从第一个查询开始,等于 A.field2 在第二个。

    2: 为清晰起见,请查找并更新所有 A、 符号 wa_tmp_listed 中的表 wa\u列表 然后将字段更新为 wa\u列表

    1 回复  |  直到 6 年前
        1
  •  0
  •   jose_bacoy    6 年前

    这是查询的正确语法: 1、由于where子句是一个 内部连接和2。您不需要更新字段1、2和3,因为 表A和表B中的值相同

    UPDATE `wa_list` B
         INNER JOIN `wa_tmp_listed` A  
              ON  A.symbol = B.symbol
              AND A.field1 = B.field1 
              AND A.field2 = B.field2 
              AND A.field3 = B.field3
        SET B.field4 = A.field4, 
            B.field5 = A.field5, 
            B.field6 = A.field6, 
            B.field7 = A.field7, 
            B.field8 = A.field8, 
            B.field9 = A.field9, 
            B.field10 = A.field10;