Я пытаюсь установить значение в одной таблице как сумму значений в другой таблице. Что-то в этом роде:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Конечно, в таком виде это не сработает - SET
не поддерживает SUM
и не поддерживает GROUP BY
.
Я должен это знать, но в моей голове пусто. Что я делаю не так?
sql
sql-server
tsql
Маргарет
источник
источник
Ответы:
источник
Использование:
источник
Или вы можете использовать смесь ответов JBrooks и OMG Ponies :
источник
Хорошая ситуация для использования CROSS APPLY
источник
Я знаю, что вопрос помечен как SQL Server, но будьте осторожны с UPDATE с JOIN, если вы используете PostgreSQL . Ответ @JBrooks не сработает:
Вам придется адаптировать его к:
См. Параметр
from_list
в документации, чтобы узнать, почемуFROM
PostgreSQL считает, что это самоподключение: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239источник
Вы также можете использовать CTE, как показано ниже.
источник