私は2つのテーブルを持っていstuff
ますnonsense
.
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);
ただし、同じ行から複数の値 ( data
and more
) をコピーしたいのですが、もちろん、サブクエリではそれができません。
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
が、単純に置き換えるだけではうまくいきません。
別のテーブルのランダムな行から複数の値を更新するにはどうすればよいですか?