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

时间:2018-03-29 12:38:12

标签: mysql select sql-update inner-join

我在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. 2:为清楚起见,请查看并更新A.symbolwa_tmp_listed表中所有wa_list的{​​{1}},然后将字段更新为wa_list

1 个答案:

答案 0 :(得分:0)

这是您的查询的正确语法:  你可以将where子句放在连接条件中,因为它是一个     INNER JOIN和2.你不需要更新field1,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;