更新SQL表的每一行没有循环

时间:2016-03-01 18:15:33

标签: php mysql

我有一个包含许多表的MySQL数据库。其中一个表(由大约3000行组成)需要使用我在PHP中组合的半复杂函数进行更新。目前我的解决方案是我首先从表中读取所需的列,然后遍历列更新每个步骤的每个值:

$result = mysqli_query($con,"SELECT id, column1,column2 FROM $table");

$u=0; //Counter for loop

//Calculate value for each Row
if(mysqli_num_rows($result) > 0 ){
        while($row = mysqli_fetch_assoc($result)){

            $dataArray[] = $row ;                   
            $dataArray[$u]['columnx'] = test_function($dataArray[$u]['column2']);

            $id_des = $dataArray[$u]['id'];
            $column1 = $dataArray[$u]['column1'];

            $query11 = mysqli_query($con, "UPDATE $table SET $table.column1= ".$dataArray[$u]['column1']." WHERE id = $id_des;");
            $u = $u+1;

        }
} 

我也做过类似的事情,使用循环来构建一个非常大的更新查询,使用CASE子句,这要快一点。然而,这两种方法都很慢,看起来很粗糙。

注意:如果有任何帮助,上面使用的功能是将百分比转换为z分数。

如果没有循环或加速执行,有没有办法做到这一点?甚至一个SQL语句也许呢?任何帮助将不胜感激。

0 个答案:

没有答案