0

我正在尝试将以下代码用于JOIN我的 MySQL 表,TableA并且TableB当它们ownerpos列都匹配时,将匹配记录中的 's 设置为TableA' s :valTableBval

UPDATE TableA A 
JOIN TableB B
ON A.owner = B.owner AND A.pos = B.pos
SET A.val = B.val

TableA 有大约 100,000 条记录,TableB 有大约 10,000 条记录,每个表中应该只有一个owner/pos匹配。

当我执行这个查询时,一切都挂起,我最终不得不中止执行。有什么我在语法上或其他方面缺少的东西来获得我想要的结果吗?

编辑:

我也尝试过以下方法;结果是一样的:

UPDATE TableA 
JOIN TableB
ON TableA.owner = TableB.owner AND TableA.pos = TableB.pos
SET TableA.val = TableB.val
4

2 回答 2

0

将 A.owner = B.owner AND A.pos = B.pos 替换为 (A.owner = B.owner AND A.pos = B.pos) 并查看 Explain plan 是否给出任何错误?

于 2015-05-09T19:02:23.147 回答
0

以下查询可能会有所帮助:

UPDATE A
SET A.val = B.val
from TableA A
INNER JOIN TableB B
ON A.owner = B.owner AND A.pos = B.pos
于 2015-05-09T19:18:57.547 回答