2012-08-30 63 views
0

我有一个地址簿表和一个包含大量随机名(random_names)的表。我想用我的random_names表的last_name字段更新我的地址簿表名字段 - RANDOMLY。PostgreSQL:如何用另一个表的字段的值更新表的一个字段随机条目

我试过了。

UPDATE addressbook 
SET "name"=sub.last_name 
FROM (SELECT last_name, random() as rand 
    FROM random_names 
    ORDER BY rand) sub 
WHERE name <> sub.last_name; 

这基本上可行,但我并没有真正得到随机名。当然,我得到一个随机名称,但每个条目都使用相同的单个随机条目进行更新。

回答

0

你可以在转让之后尝试一个子查询:

如果
UPDATE addressbook as ab 
SET  "name" = 
     (
     SELECT rn.last_name 
     FROM random_names rn 
     WHERE rn.last_name <> ab.last_name 
     ORDER BY 
       random() 
     LIMIT 1 
     ) 

不知道Postgres将评估每一行的子查询,但不能伤害尝试。

相关问题