У меня есть следующие две таблицы:
CREATE TABLE results (
id UUID PRIMARY KEY,
map_id UUID,
-- other irrelevant columns
);
CREATE TABLE mapping (
client_id UUID PRIMARY KEY,
server_id UUID UNIQUE
)
В рамках этапа очистки ETL задача состоит в том, чтобы просмотреть все записи в mapping
и обновить results
, поменяв местами все client_id
совпадает с server_id
.После этого map_id
в results
не может быть client_id
.
В настоящее время мой наивный подход заключается в использовании языка вызова (C #) для перебора всех записей в mapping
и выполнения
UPDATE results
SET map_id = @server_id
WHERE map_id = @client_id
Однако это, вероятно, можно оптимизировать.Читая связанные вопросы, циклы крайне не рекомендуется в SQL.Итак, как я могу выразить мой итеративный подход выше как оператор SQL?Я использую Postgres 10.