У меня есть простой запрос SELECT
, который отлично работает и возвращает одну строку, которая является последним вхождением определенного значения в столбце order_id
. Я хочу обновить эту строку. Однако я не могу объединить этот запрос SELECT
с запросом UPDATE
.SQL update Последнее появление
Это рабочий запрос, который возвращает одну строку, которую я хочу обновить:
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY order_id
ORDER BY start_hour DESC) rn
FROM general_report
WHERE order_id = 16836
) q
WHERE rn = 1
И я перепробовал много комбинаций для обновления строки, возвращаемой этим утверждением. Например, я попытался удалить SELECT *
и обновить таблицу q
, как описано ниже, но это не помогло мне сказать, что отношения q не существуют.
UPDATE q
SET q.cost = 550.01685
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY order_id
ORDER BY start_hour DESC) rn
FROM general_report
WHERE order_id = 16836
) q
WHERE rn = 1
Как я могу объединить эти коды с правильным синтаксисом UPDATE
? В случае необходимости, я проверяю свои коды в SQL Manager для PostgreSQL.
Ваш подзапрос коррелированы. – joop