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

标签 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:为清楚起见,请查找并更新 wa_tmp_listed 表中位于 wa_list 中的所有 A.symbol,然后更新将字段放入 wa_list 中。

最佳答案

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

关于mysql - 从 Select 更新 - 语法和概念检查 (mySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49556301/

相关文章:

mysql - 错误 1822 : Failed to add the foreign key constaint. 缺少约束索引

mysql - Microsoft Access 2010 中 OrderByOn 属性中的错误

mysql - SQL - 选择一个增量值或返回一个常量

我的选择表单中的 Javascript 不适用于文本区域字段

MYSQL条件更新表

java - MySQL 与 JDBC : select * from mysql. proc => FUNCTION * 不存在

python - 关于mysql游标和迭代器

mysql - 多个 SELECT 语句的正确 mySQL 语法?

MySQL UPDATE 多连接不工作

mysql - 这是 MySQL 中更新查询的正确方法吗?