小编Ser*_*rge的帖子

PostgreSQL shuffle列值

在具有> 100k行的表中,如何有效地混洗特定列的值?

表定义:

CREATE TABLE person
(
  id integer NOT NULL,
  first_name character varying,
  last_name character varying,
 CONSTRAINT person_pkey PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

为了匿名化数据,我必须将'first_name'列的值放在适当位置(我不允许创建新表).

我的尝试:

with
first_names as (
select row_number() over (order by random()),
       first_name as new_first_name
from person
),
ids as (
select row_number() over (order by random()), 
       id as ref_id
from person
)
update person
set first_name = new_first_name
from first_names, ids
where id = ref_id;
Run Code Online (Sandbox Code Playgroud)

这需要几个小时才能完成.

有没有一种有效的方法呢?

sql postgresql performance shuffle

6
推荐指数
2
解决办法
1558
查看次数

标签 统计

performance ×1

postgresql ×1

shuffle ×1

sql ×1