MySQL 存储过程批量更新字段值 (k5, k10, k20, k40) - 动态表名
可以使用一个存储过程来批量修改 k5、k10、k20、k40 字段的值。以下是一个示例存储过程的代码:
DELIMITER //
CREATE PROCEDURE update_k_values(IN table_name VARCHAR(255))
BEGIN
SET @sql = CONCAT('UPDATE ', table_name, ' SET k5 = (SELECT SUM(c) / 5 FROM (SELECT c FROM ', table_name, ' ORDER BY ts LIMIT 5) AS t), k10 = (SELECT SUM(c) / 10 FROM (SELECT c FROM ', table_name, ' ORDER BY ts LIMIT 10) AS t), k20 = (SELECT SUM(c) / 20 FROM (SELECT c FROM ', table_name, ' ORDER BY ts LIMIT 20) AS t), k40 = (SELECT SUM(c) / 40 FROM (SELECT c FROM ', table_name, ' ORDER BY ts LIMIT 40) AS t);');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
在这个存储过程中,表名是通过参数传入的。存储过程内部使用动态 SQL 来构建 UPDATE 语句,通过子查询获取前 5、10、20、40 个记录的 'c' 字段值的和,并将其除以相应的数字赋值给 k5、k10、k20、k40 字段。
要调用这个存储过程,可以使用以下语法:
CALL update_k_values('your_table_name');
将'your_table_name'替换为实际的表名即可。
原文地址: https://www.cveoy.top/t/topic/jwvK 著作权归作者所有。请勿转载和采集!