2012-08-30 100 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將評估每一行的子查詢,但不能傷害嘗試。

相關問題