gpt4 book ai didi

PostGresql:从另一个表的随机行复制数据

转载 作者:行者123 更新时间:2023-11-29 14:16:45 25 4
gpt4 key购买 nike

我有两个表,stuffnonsense

create table stuff(
id serial primary key,
details varchar,
data varchar,
more varchar
);
create table nonsense (
id serial primary key,
data varchar,
more varchar
);

insert into stuff(details) values
('one'),('two'),('three'),('four'),('five'),('six');
insert into nonsense(data,more) values
('apple','accordion'),('banana','banjo'),('cherry','cor anglais');

参见 http://sqlfiddle.com/#!17/313fb/1

我想将随机值从 nonsense 复制到 stuff。我可以使用上一个问题的答案对单个值执行此操作:SQL Server Copy Random data from one table to another :

update stuff
set data=(select data from nonsense where stuff.id=stuff.id
order by random() limit 1);

但是,我想从同一行复制多个值(datamore),而子查询不允许我这样做,当然。

我是 Microsoft SQL,我可以使用以下内容:

update stuff
set data=sq.town,more=sq.state
from stuff s outer apply
(select top 1 * from nonsense where s.id=s.id order by newid()) sq

我读到 PostGresql 使用类似 LEFT JOIN LATERAL 的东西而不是 OUTER APPPLY,但简单的替换对我不起作用。

如何使用另一个表的随机行中的多个值进行更新?

最佳答案

从 Postgres 9.5 开始,您可以从一个子查询中分配多个列:

update stuff
set (data, more) = (
select data, more
from nonsense
where stuff.id=stuff.id
order by random()
limit 1
);

关于PostGresql:从另一个表的随机行复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com