我有一个地址簿表和一个包含大量随机名称的表(random_names)。我想用random_names表的last_name字段更新我的地址簿表名字段 - RANDOMLY。
我试过了。
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 :(得分: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是否会评估每一行的子查询,但不能尝试。