【问题标题】:Update from Select - Syntax and concept check (mySQL)从 Select 更新 - 语法和概念检查 (mySQL)
【发布时间】:2018-09-08 10:12:23
【问题描述】:

我在 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:为清楚起见,在wa_tmp_listed 表中查找并更新wa_list 中的所有A.symbol,然后将字段更新为wa_list

【问题讨论】:

    标签: mysql select sql-update inner-join


    【解决方案1】:

    这是您查询的正确语法: 1. 您可以将 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;
    

    【讨论】:

    • 已解决。感谢您提供关于如何在给定 INNER JOIN 的情况下使用 WHERE 子句的注释和提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2021-11-27
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    相关资源
    最近更新 更多