0

这就是我希望单独使用 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 中实现这一点?

细节:

第一次选择的输出中可能有重复的值,并且对于每个重复的值,都会运行更新语句。因此,如果值“123”在第一个选择的输出中出现三次,则 f4 将更新为 f4-3,其中 f3=123。

'L'是表't1'中满足“f1=constant”条件的次数;这个数字以前是已知的,因此用作限制。

使用限制 1 是因为字段“f3”中的值是唯一的。

4

1 回答 1

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 = ?;
于 2012-09-28T19:07:27.843 回答