这就是我希望单独使用MySQL的方法:(不使用PHP)
PHP代码:
$result=mysql_query("select f2 from t1 where f1=constant limit L");
while( $data = mysql_fetch_row($result) )
mysql_query("update t2 set f4=f4-1 where f3={$data[0]} limit 1");如果您不知道PHP:
select f2 from t1 where f1=constant limit L;
for each f2 (from above result) as F:
update t2 set f4=f4-1 where f3=F limit 1;如何在MySQL中实现这一点?
详细信息:
在第一个select的输出中可以有重复的值,对于每个重复项,update语句将被运行。因此,如果在第一个select的输出中出现三次值'123‘,那么f4将被更新为f4-3,其中f3=123。
'L‘是表’t1‘中满足"f1=constant“条件的次数;这个数字是已知的,因此用作限制。
使用限制1是因为字段'f3‘中的值是唯一的。
发布于 2012-09-28 19:07:27
使用此查询,并提供缺少的参数:
UPDATE t2 SET f4 = f4 - 1
WHERE f3 IN (SELECT f2 FROM t1 WHERE f1 = ? LIMIT ?);如果您希望对匹配的f2中的每一行进行修改(考虑到f2.t1不是唯一的),那么应该可以这样做:
UPDATE t2, t1 SET t2.f4 = t2.f4 - 1
WHERE t2.f3 = t1.f2
AND t1.f1 = ?;https://stackoverflow.com/questions/12645900
复制相似问题