python - 用循环更新表

标签 python mysql sql database iteration

您好,我想通过在每次迭代中选择该列中的最小值并将其增加 10% 直到列的总和变为特定值(例如 3000)来更新列

UPDATE db1.tb1 a 
SET    a.col1 = IF(SUM(a.col1) < 3000, a.col1 + ( a.col1 / 10 ), a.col1) 
WHERE  a.col1 IN (SELECT Min(b.col1) 
                  FROM   (SELECT col1, 
                                 col2 
                          FROM   db1.tb1), 
                         b) 

最佳答案

我认为您无法在单个 update 语句中完成此操作。可以重复循环。每次迭代看起来都更像这样:

update tb1.tbl t cross join
       (select min(col1) as min1, sum(col1) as sum1
        from tb1.tbl
       ) tt
    set col1 = 1.1 * col1
    where tt.sum1 < 3000 and t.col1 = tt.min1
    limit 1;

请注意限制 1,因此仅更新一行。然后,您可以计算修改的行数(例如使用mysql_affected_rows())。当为0时,则停止。

如果您想在 MySQL 中进行循环,您还可以在 MySQL 存储过程中进行设置。

关于python - 用循环更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35115009/

相关文章:

sql - 在 Select 中合并两个表 (SQL Server 2008)

sql - 如何重命名 SQL 表中的列?

python - 在python源代码中查找非ascii字节串

python - 在 Centos 5 上使用非系统 Openssl 编译 Python 2.7.12

mysql - 获取2条最新记录并执行数学函数

mysql - Grails:更改休眠方言时 SQL 语法错误

mysql - 无法显示表格中的预期结果

mysql - 在mysql数据库上插入数据后如何更新ms sql数据库?

Python - 使用子进程调用 sed?

c++ - 扣除算法