[英]Postgresql update 200 random records
我有一個查詢從我的數據庫中返回 200 個隨機不同的 foo。 我想更新這些行的注釋字段。
select distinct on (foo, random()) *
from test
order by random(), foo
limit 200
update test
notes = 'Flag'
order by random()
limit 200
我的第一個想法是使用 order 和 limit inside update,但那些在那里不起作用。 我認為的另一個選擇是在更新中使用 select。
但我不太確定,這就是我來這里的原因。 任何讓 sql 更新 200 個不同的隨機行的想法都很棒。
假設foo
是您的主鍵,您可以執行 CTE 和半連接:
with cte as (
select foo
from test
order by random()
limit 200
)
update test t
set notes = 'Flag'
where exists (
select null
from cte c
where t.foo = c.foo
)
這對於大型數據集來說非常有效。
您也可以試試這個,它更容易遵循,但在性能方面的可擴展性較差。 對於 200 行,應該沒問題。
update test f1
set notes = 'Flag'
where foo in (select foo from test order by random() limit 200)
如果 foo 不是主鍵,則使用主鍵即可。 如果您沒有 PK,則可以使用所有列,但不能保證在這種情況下您只會更新 200。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.