Агрегатная функция в запросе на обновление SQL?

Я пытаюсь установить значение в одной таблице к сумме значений в другой таблице. Что-то вдоль этих строк:

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.

Я должен знать это, но мой терпящий неудачу ум. Что я делаю неправильно?

91
задан OMG Ponies 4 March 2010 в 05:53
поделиться

3 ответа

UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
   from table2
  group by field3) as t2
on t2.field3 = t1.field3  
.
143
ответ дан 24 November 2019 в 06:48
поделиться

Использовать:

UPDATE table1
   SET field1 = (SELECT SUM(t2.field2) 
                   FROM TABLE2 t2 
                  WHERE t2.field3 = field2)
9
ответ дан 24 November 2019 в 06:48
поделиться

Или вы можете использовать смесь JBrooks и OMG Ponies ответы:

UPDATE table1
   SET field1 = (SELECT SUM(field2)
                   FROM table2 AS t2
                  WHERE t2.field3 = t1.field3)
  FROM table1 AS t1
5
ответ дан 24 November 2019 в 06:48
поделиться