IT story

SQL 업데이트 쿼리의 집계 함수?

hot-time 2020. 9. 9. 20:14
반응형

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.

나는 이것을 알아야하지만 내 마음은 공백을 그려 내고있다. 내가 뭘 잘못하고 있죠?


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  

사용하다:

UPDATE table1
   SET field1 = (SELECT SUM(t2.field2) 
                   FROM TABLE2 t2 
                  WHERE t2.field3 = field2)

또는 JBrooksOMG Ponies 답변을 혼합하여 사용할 수 있습니다 .

UPDATE table1
   SET field1 = (SELECT SUM(field2)
                   FROM table2 AS t2
                  WHERE t2.field3 = t1.field3)
  FROM table1 AS t1

CROSS APPLY를 사용하기에 좋은 상황

UPDATE t1
   SET t1.field1 = t2.field2Sum
  FROM table1 t1
 CROSS APPLY (SELECT SUM(field2) as field2Sum
                FROM table2 t2
               WHERE t2.field3 = t1.field3) AS t2

질문이 SQL Server 태그라는 것을 알고 있지만 PostgreSQL을 사용하는 경우 JOIN으로 UPDATE 할 때주의하십시오 . @JBrooks 답변이 작동하지 않습니다.

UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (...) as t2
on t2.field3 = t1.field3  

다음 사항에 맞게 조정해야합니다.

UPDATE table1 t1
SET t1.field1 = t2.field2Sum
FROM (...) as t2
WHERE t2.field3 = t1.field3  

PostgreSQL에서 자체 조인으로 간주되는 from_list이유를 확인하려면 문서의 매개 변수 참조하십시오 FROM. https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239

참고 URL : https://stackoverflow.com/questions/2009927/aggregate-function-in-an-sql-update-query

반응형