我在 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;
注释:
-
第一个查询中的
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/