Обновление таблицы на основе временной таблицы

В системе postrgres я создал временную таблицу, в которой значение внешнего ключа хранится в другой таблице. Я надеюсь обновить другую таблицу информацией из этой временной таблицы на основе значения внешнего ключа в таблице, которую я хочу обновить.

Я думал использовать запрос на обновление, такой как:

update playerdata set "slotID"=temp1."gameID" from temp1 where playerdata."PlayerID"=playerdata."PlayerID";

Однако когда я делаю это обновление, я получаю одинаковый gameID для каждого slotID в таблице, когда они должны отличаться в зависимости от playerID.

Например, если temp содержит:

playerid gameID
1         10
2         11

результат обновления таблицы данных игрока:

playerid     slotID
1             10
2             10

и я хочу, чтобы результат был:

playerid     slotID
1             10
2             11

Я также работал с оператором соединения с временной таблицей, и он работает, как и ожидалось, идентификаторы gameID соответствуют их идентификатору playerID. select w."PlayerID", t."gameID" from playerdata as w, temp1 as t where t."PlayerID" = w."PlayerID";

Есть ли способ обновить слоты таблицы данных игрока на основе соответствующих временных идентификаторов игрока и идентификатора игры?

1 ответ

Решение

Ваш join условие неверно в первом запросе:

update playerdata
    set "slotID"=temp1."gameID"
    from temp1
    where playerdata."PlayerID" = temp1."PlayerID";
----------------------------------^
Другие вопросы по тегам