0
我有两个MySQL表:合并两个MySQL的请求(SELECT和UPDATE)为一个
- 的表中调用
rawmats
存储部分原料的数量; - 另一个称为
stock_changes
的存储事件,当某种物料的库存正在变化时(增量数量被存储,与物料ID绑定)。
我需要以撤消存储在stock_changes
表,存储在rawmats
的实际库存的所有更改的MySQL的请求。
目前,下面的PHP代码做的很好:
$stock_changes_req = $db->prepare('SELECT rawmat_id, delta FROM stock_changes');
$stock_update_req = $db->prepare('UPDATE rawmats SET stock = stock - :delta WHERE id=:rawmat_id');
$stock_changes_req->execute();
$stock_changes = $stock_changes_req->fetchAll(PDO::FETCH_ASSOC);
foreach ($stock_changes as $stock_change)
$stock_update_req->execute($stock_change);
有关于它的两个问题:
- 是否有可能这两个请求(和PHP环路)合并成一个大的MySQL请求?我想这可能会更好,如果它是这样编码的
- 如果合并是可能的,它会有利于性能?我个人认为是这样,因为它会将两个mysql请求和一个php循环替换为只有一个大的mysql请求。如果表现收益很小,那么我的问题就不会对我产生更多的兴趣。
SQL是这样对我:很难找到正确的方法,但如此明显,当你可以看到解决方案......顺便说一下,你拼错了table2别名(t1而不是t2)。许多thx – yolenoyer