这就是我想单独使用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中实现它?
详细信息:
第一个选择的输出中可能存在重复值,对于每个重复项,将运行update语句。因此,如果值'123'在第一个选择的输出中出现三次,则f4将更新为f4-3,其中f3 = 123。
'L'是表't1'中满足“f1 =常数”条件的次数;这个数字之前是已知的,因此被用作限制。
使用限制1,因为字段'f3'中的值是唯一的。
答案 0 :(得分:1)
使用此查询,并提供缺少的参数:
UPDATE t2 SET f4 = f4 - 1
WHERE f3 IN (SELECT f2 FROM t1 WHERE f1 = ? LIMIT ?);
如果您希望对t2.f4
中匹配的每一行f2
进行修改(假设f2.t1
不唯一),那么这应该有效:
UPDATE t2, t1 SET t2.f4 = t2.f4 - 1
WHERE t2.f3 = t1.f2
AND t1.f1 = ?;