0

クエリでレコードを選択した直後に一連のレコードを更新する方法があるかどうか疑問に思っていました。つまり、一連のレコードを取得する必要があり、フェッチされたセットに応じて、「読み取り」フィールドを 1 に更新します。

クエリのみで実行できますか、それとも個別に実行する必要がありますか?

ありがとう。

4

3 に答える 3

0

例:必要に応じて、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");
于 2012-09-20T18:11:42.257 に答える
0

それらを選択する必要はまったくありませ。選択する目的がわかっている場合は、同じ WHERE を更新に使用できます。WHERE

次の方法でレコードを選択するとします。

select foo, bar from foobar where foo like '%fo'

次に、このようにレコードを更新します

update foobar set bar='new' where foo like '%fo'
于 2012-09-20T18:06:42.850 に答える
0

単一のクエリのみを使用しようとしているのはなぜですか? 一貫性がある場合は、トランザクションで DB を使用してみるか、少なくとも 2 つのクエリを発行する前にテーブルをロックしてください。しかし、最終的には、2 つのクエリで問題ありません。単一のクエリと同じ時間の複雑さでなければなりません。二重クエリを恐れないでください! :D

于 2012-09-21T01:34:56.620 に答える