반응형
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
아니면 JBrooks와 OMG 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
이유를 알기 위해 의사에게FROM
Postgre에 의해 고려됨자가 진단 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
반응형
'programing' 카테고리의 다른 글
SQL Server에서 IDENTITY_INSERT가 ON 또는 OFF로 설정되어 있는지 어떻게 확인합니까? (0) | 2023.05.20 |
---|---|
왜 아이바를 사용합니까? (0) | 2023.05.20 |
사용자 지정 컴파일러 경고 (0) | 2023.05.20 |
.NET에 좀비가 존재합니까? (0) | 2023.05.15 |
Xcode 8.3 / Xcode 9.0 프로비저닝 프로파일 디바이스 새로 고침 (0) | 2023.05.15 |