我有一个名为 _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;
最佳答案
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;
关于mysql - 如何将mysql中的while循环组合到单个更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764155/