【发布时间】:2014-01-20 14:15:32
【问题描述】:
我有一张这样的桌子
+----+-------+------+
| id | apple | pear |
+----+-------+------+
| 1 | 3 | 10 |
+----+-------+------+
| 2 | 5 | 8 |
+----+-------+------+
| 3 | 4 | 7 |
+----+-------+------+
我必须删除 9 个苹果和 11 个梨。 这样的结果
+----+-------+------+
| 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=SUM(apple)-9;更新表 SET apple=o WHERE id!=1