2

where句を含むSQLSelectクエリがあります。例えば

select * from table where status = 1

また、選択中に選択した行で単一の列を同時に更新するにはどうすればよいですか?次のループでの再選択を避けるために、選択した行にマークを付けたいと思います。何かのようなもの:

select * from table where status = 1; update table set proc = 1 where id in (select id from table where status = 1)

ただし、このクエリは結果を返しません。

4

1 に答える 1

3

return句を使用します。

update table 
    set proc = 1 
where id in (select id from table where status = 1)
returning *;

(ところで、内部のselectは実際には同じテーブルから選択していないと思います。これは、単純なもので書き直すことができるため、ステートメントが実際には意味をなさないためですwhere stauts = 1

于 2012-06-13T11:13:45.410 に答える