programing

SQL 업데이트 쿼리에서 함수를 집계하시겠습니까?

telecom 2023. 5. 20. 10:05
반응형

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)

CROSS APPLE을 사용하기에 좋은 상황

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

아니면 JBrooksOMG Ponys의 답변을 혼합하여 사용할 수도 있습니다.

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

질문에 SQL Server 태그가 지정된 것은 알지만 Postgre를 사용하는 경우 JOIN을 사용한 UPDATE에 주의하십시오.SQL. @JBooks 응답이 작동하지 않습니다.

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  

매개변수 참조from_list이유를 알기 위해 의사에게FROMPostgre에 의해 고려됨자가 진단 SQL: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239

아래와 같이 CTE를 사용할 수도 있습니다.

;WITH t2 AS (
    SELECT field3, SUM(field2) AS field2
    FROM table2
    GROUP BY field3
)
UPDATE table1
SET table1.field1 = t2.field2
FROM table1
INNER JOIN t2 ON table1.field3 = t2.field3

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

반응형