Вставить / обновить значения в столбце postgresql
Всем привет! Имеется 2 таблицы. Необходимо из первого столбца таблицы №2 вставить значения во второй столбец таблицы №1. Никакой логики при вставке нет. Подскажите, как правильно будет осуществить вставку (желательно без процедур)? Язык PostgreSQL 8.3
Ответы (1 шт):
Для затравки.
Копирование записей из таблицы 2 в таблицу 1 так, что каждое значение из таблицы 2 попадает в случайную запись таблицы 1. Если в таблице 1 записей больше, некоторые её записи останутся необновлёнными, если меньше, то часть значений из таблицы 2 никуда не попадёт.
WITH
cte1 AS ( SELECT column_1, ROW_NUMBER() OVER (ORDER BY RANDOM()) rn
FROM table1 ),
cte2 AS ( SELECT column_1, ROW_NUMBER() OVER (ORDER BY RANDOM()) rn
FROM table2 )
UPDATE table1
SET column_2 = ( SELECT cte2.column_1
FROM cte2
JOIN cte1 ON cte1.rn = cte2.rn
WHERE cte1.column_1 = table1.column_1 );
Суть происходящего - записи в обеих таблицах нумеруются (в случайном порядке), затем выполняется обновление на основании равенства присвоенных номеров.
