如何仅在一个表上基于LIMIT更新多个MySQL表?

时间:2014-05-16 19:34:05

标签: mysql sql database performance query-optimization

想象一下以下3个表:

  

表-A:| ID | A-数据|排序数据|

     

表-B:| A-ID | B数据|

     

表-C:| A-ID | C-Data |

表A的行数远少于其他2个表。我要做的是使用Sorting& amp;破坏5个块中的Table-A。限制(每次20%)。现在我知道我可以很容易地根据这个限制更新表格A的数据。但是,我无法对其他表进行排序和限制,因为他们没有排序数据 - 他们只是拥有表A中的ID。

我能做到这么快吗?我是否必须收集所有ID并使用IN运算符?我是否必须使用ID加入所有表格然后更新?我可以用来快速执行此操作的最佳查询是什么?

1 个答案:

答案 0 :(得分:1)

UPDATE TableA AS a
JOIN TableB AS b ON a.id = b.Aid
JOIN TableC AS c ON a.id = c.Aid
JOIN (SELECT id
      FROM TableA
      ORDER BY SortData
      LIMIT 5) AS asorted ON a.id = asorted.id
SET a.adata = x, b.bdata = y, c.cdata = z