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

标签 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;

最佳答案

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/

相关文章:

mysql - 多对一 SQL IN 语句

mysql - 在 MySQL、ASP 中返回行的问题

mysql - ON DUPLICATE KEY UPDATE 每列,除了

MySQL 查询 : Join tables and display records as comma separated string in a single row

mysql - 如何使用 Putty 将数据从一台远程服务器移动到另一台远程服务器

php - MySql/php 中的换行符

php - 当您选择多列并为每个分解数据放置一个表示时,如何使用 php 从 mysql 分解 1 列?

mySql 插入需要记录所有列

java - SQL select 语句无法正确打印

mysql - 检查值是否不在表中..help..please (Mysql + C)