クエリでレコードを選択した直後に一連のレコードを更新する方法があるかどうか疑問に思っていました。つまり、一連のレコードを取得する必要があり、フェッチされたセットに応じて、「読み取り」フィールドを 1 に更新します。
クエリのみで実行できますか、それとも個別に実行する必要がありますか?
ありがとう。
例:必要に応じて、where句のテーブル名と基準を変更します。
update abc
set read = 1
where a in (select p from pqr where p=q)
質問に対する最新のコメントに基づいて、2つのクエリが必要になります。
$rs = mysql_query("select p from pqr where p=q");
2番目のクエリをループ内に配置し、1番目のクエリの結果セットをトラバースします
foreach( $rs as $v)
mysql_query("update abc set read = 1 where a = $v");
それらを選択する必要はまったくありません。選択する目的がわかっている場合は、同じ WHERE を更新に使用できます。WHERE
次の方法でレコードを選択するとします。
select foo, bar from foobar where foo like '%fo'
次に、このようにレコードを更新します
update foobar set bar='new' where foo like '%fo'
単一のクエリのみを使用しようとしているのはなぜですか? 一貫性がある場合は、トランザクションで DB を使用してみるか、少なくとも 2 つのクエリを発行する前にテーブルをロックしてください。しかし、最終的には、2 つのクエリで問題ありません。単一のクエリと同じ時間の複雑さでなければなりません。二重クエリを恐れないでください! :D