如何将mysql中的while循环组合到单个更新中

时间:2017-01-20 12:51:09

标签: mysql

我有一个名为_temp的临时表,其中包含将被发送回网页的订单。创建此表时,它会填充除每个订单中的照片数量之外的所有信息(当前它会将照片数量设置为-1,以便我知道它尚未更新)。我想将每个订单中的照片数量更新为正确的数量。我不知道如何在不使用while语句的情况下单独执行每个订单。这是我目前正在使用的代码,它工作得很好但很慢

SET _current_id = (SELECT old_id FROM _temp WHERE photos = -1 LIMIT 1);

WHILE (_current_id IS NOT NULL) DO
UPDATE _temp SET photos = (SELECT COUNT(f.id) FROM files f WHERE f.file_type = "orders" AND f.table_id = _current_id AND deleted = 0) WHERE old_id = _current_id;
SET _current_id = (SELECT old_id FROM _temp WHERE photos = -1 LIMIT 1);
END WHILE;

1 个答案:

答案 0 :(得分:0)

update _temp t set t.photos = (SELECT COUNT(f.id) FROM files f WHERE f.file_type = "orders" AND f.table_id = t.old_id AND deleted = 0) WHERE old_id = t.old_id;