Ich habe zwei Tabellen, stuff
und nonsense
.PostGresql: Kopieren von Daten aus einer zufälligen Zeile einer anderen Tabelle
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');
Siehe http://sqlfiddle.com/#!17/313fb/1
Ich möchte Zufallswerte nonsense
-stuff
kopieren. Ich kann für einen einzigen Wert das tut die Antwort auf meine vorherige Frage mit: 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);
Allerdings würde ich mehr als einen Wert kopieren mag (data
und more
) aus der gleichen Zeile, und die Sub-Abfrage Lass mich das natürlich nicht machen.
ich Microsoft SQL kann ich folgendes verwenden:
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
Ich habe gelesen, dass PostGreSQL so etwas wie LEFT JOIN LATERAL
statt OUTER APPPLY
verwendet, sondern einfach ersetzt für mich nicht funktioniert.
Wie kann ich mit mehreren Werten aus einer zufälligen Zeile einer anderen Tabelle aktualisieren?