2016-05-05 24 views
1

return句で更新クエリを実行し、返される行を制限することはできますか?たとえば、私はudateクエリを実行し、100万レコードを更新しますが、結果セットに更新された100万行を戻したいとは思いません。これは可能ですか?Postgresql "update query returned *" with limit

マイクエリ:

UPDATE table1 SET col1 = value1 RETURNING * 

私は、更新された列の数と1000行、更新後のサンプルを取得したいです。

答えて

3
with updated as (
    update the_table_with_many_rows 
    set some_column = 42 
    where ... 
    returning * 
) 
select u.*, 
     count(*) over() as total_update_count 
from updated as u 
limit 1000; 
+0

お返事ありがとうございます。また、行の合計数を(制限付きで選択して)更新することが可能かどうかを教えてください。 –

+0

@ShannuVaddi:私の編集を参照してください。あなたが答えを得た後、質問を変更したり延長したりすることは、あまり礼儀正しいとは考えられません。あなたの最初の質問にはすでにその要件が含まれているはずです –

+0

私はstackoverflowに関する質問をするのは新しいです。私はより多くの情報を提供する意図で変わった。ところで、更新された答えに感謝します。 –

2

あなたはCTEでこれを行うことができます。

WITH updates AS (
    UPDATE my_table SET (f1, f2, f3) = (v1, v2, v3) 
    WHERE some_condition 
    RETURNING *) 
SELECT * FROM updates 
LIMIT 1000; 

しかし、あなたは外側のクエリにいくつかの順序付けを使用することができない限り、1,000行は、返されるを制御することはできません。

+0

お返事ありがとうございます。また、行の合計数を(制限付きで選択して)更新することが可能かどうかを教えてください。 –