これは、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」が 3 回出現すると、f4 は f3=123 である f4-3 に更新されます。
'L' は、テーブル 't1' で "f1=constant" 条件が満たされた回数です。この数は事前にわかっているため、制限として使用されます。
フィールド 'f3' の値が一意であるため、制限 1 が使用されます。