>데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 다른 테이블의 합계로 테이블 필드를 업데이트하는 방법은 무엇입니까?

SQL을 사용하여 다른 테이블의 합계로 테이블 필드를 업데이트하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-22 19:23:11562검색

How to Update a Table Field with the Sum from Another Table Using SQL?

집계 함수를 사용한 SQL 업데이트 쿼리

이 질문은 SQL 업데이트 쿼리에서 집계 함수의 사용을 살펴봅니다. 사용자가 다른 테이블의 값 합계를 사용하여 테이블의 필드를 업데이트하려고 합니다. 그러나 구문 문제로 인해 쿼리가 작동하지 않습니다.

분석

사용자가 제시한 초기 쿼리에는 두 가지 주요 결함이 있습니다.

  1. SET 및 GROUP BY 절 혼합: SET은 GROUP BY를 지원하지 않으며 그 반대도 마찬가지입니다. 반대.
  2. SET 절에서 집계 함수(SUM) 직접 사용: SET에서는 집계가 아닌 단일 값을 기대합니다.

해결책

이러한 문제를 해결하려면 하위 쿼리를 사용해야 합니다. 하위 쿼리는 두 번째 테이블의 값 합계를 공통 필드별로 그룹화하여 계산합니다. 그러면 이 하위 쿼리의 결과가 첫 번째 테이블과 조인되어 그에 따라 필드를 업데이트하는 데 사용됩니다.

올바른 쿼리:

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

이 쿼리에서:

  • 하위 쿼리는 field3의 각 고유 값에 대해 table2에서 field2의 합계를 계산합니다.
  • 외부 쿼리 field3 필드를 사용하여 table1을 하위 쿼리 결과와 조인합니다.
  • table1의 field1은 하위 쿼리에서 계산된 field2Sum으로 업데이트됩니다.

위 내용은 SQL을 사용하여 다른 테이블의 합계로 테이블 필드를 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.