Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否从不同的行中删除值,直到数据耗尽?_Php_Mysql_Rows_Cycle - Fatal编程技术网

Php 是否从不同的行中删除值,直到数据耗尽?

Php 是否从不同的行中删除值,直到数据耗尽?,php,mysql,rows,cycle,Php,Mysql,Rows,Cycle,我有一张这样的桌子 +----+-------+------+ | id | apple | pear | +----+-------+------+ | 1 | 3 | 10 | +----+-------+------+ | 2 | 5 | 8 | +----+-------+------+ | 3 | 4 | 7 | +----+-------+------+ +----+-------+------+ | id | apple | pear

我有一张这样的桌子

+----+-------+------+
| id | apple | pear |
+----+-------+------+
|  1 |   3   |  10  |
+----+-------+------+
|  2 |   5   |   8  |
+----+-------+------+
|  3 |   4   |   7  |
+----+-------+------+
+----+-------+------+
| id | apple | pear |
+----+-------+------+
|  1 |   0   |   0  |
+----+-------+------+
|  2 |   0   |   7  |
+----+-------+------+
|  3 |   1   |   7  |
+----+-------+------+
我必须删除9个苹果和11个梨。 这样的结果

+----+-------+------+
| id | apple | pear |
+----+-------+------+
|  1 |   3   |  10  |
+----+-------+------+
|  2 |   5   |   8  |
+----+-------+------+
|  3 |   4   |   7  |
+----+-------+------+
+----+-------+------+
| id | apple | pear |
+----+-------+------+
|  1 |   0   |   0  |
+----+-------+------+
|  2 |   0   |   7  |
+----+-------+------+
|  3 |   1   |   7  |
+----+-------+------+
有没有一种不用做很多查询就可以做到这一点的方法

我做了这样的事。 我想知道是否有更好的办法

    $eat["apple"]=9; 
    $eat["pear"]=11;
    $id=0;   //I will increment this id during the cycle

    while ($eat["apple"] > 0 && $eat["pear"] > 0) {
        $get_fruit=mysql_query("SELECT id,apple,pear FROM fruits WHERE 
           id>'".$id."' 
   ORDER BY id LIMIT 1") or die (mysql_error());

        if((mysql_num_rows($get_fruit))==0){
           die; 
        } else {

          $fruit = mysql_fetch_assoc($get_fruit);
          $id = $fruit["id"];   

          foreach ($eat as $key => $value) {

             if ($fruit[$key]>$eat[$key]) {
                $fruit[$key]-=$eat[$key];
                $eat[$key]=0;
             } else {
                $eat[$key]-=$fruit[$key];
                $fruit[$key]=0;
             }
      }

    $update=mysql_query("UPDATE fruits SET 
            apple='".$fruit["apple"]."',
            pear='".$fruit["pear"]."' 
            WHERE id='".$id."'LIMIT 1") or die (mysql_error());
}
}这是苹果

SET @apple = 9;
UPDATE fruits x
  JOIN 
     ( SELECT id
            , apple
            , GREATEST(apple-@apple,0)n,@apple:=@apple-apple 
         FROM fruits 
        ORDER 
           BY id
     ) y
    ON y.id = x.id
   SET x.apple = y.n;

你的苹果不累加。更新表格集合苹果=SUM(苹果)-9;更新表格集apple=o其中id=1.