>데이터 베이스 >MySQL 튜토리얼 >SQL에서 CTE를 사용하여 테이블 레코드를 업데이트하려면 어떻게 해야 합니까?

SQL에서 CTE를 사용하여 테이블 레코드를 업데이트하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-08 14:43:10824검색

How Can I Update Table Records Using a CTE in SQL?

CTE를 사용하여 테이블 레코드 업데이트

SQL에서는 CTE(공통 테이블 표현식) 및 UPDATE 문을 사용하여 테이블의 데이터를 수정할 수 있습니다. CTE는 쿼리에서 참조할 수 있는 별칭 또는 임시 결과 집합입니다.

CTE를 사용하여 테이블의 레코드를 업데이트하려면 다음과 같은 쿼리를 사용할 수 있습니다.

<code class="language-sql">WITH CTE_DocTotal AS (
  SELECT SUM(Sale + VAT) AS DocTotal
  FROM PEDI_InvoiceDetail
  GROUP BY InvoiceNumber
)

UPDATE PEDI_InvoiceDetail
SET DocTotal = CTE_DocTotal.DocTotal;</code>

이 쿼리는 PEDI_InvoiceDetail 테이블의 DocTotal 열 값을 CTE_DocTotal CTE의 DocTotal 열 값으로 업데이트합니다.

그러나 귀하의 경우 CTE 정의에는 CTE와 PEDI_InvoiceDetail 테이블 간의 링크가 없습니다. 이 링크를 설정하려면 다음과 같이 CTE에 분할 절을 추가합니다.

<code class="language-sql">WITH T AS (
  SELECT InvoiceNumber,
         DocTotal,
         SUM(Sale + VAT) OVER(PARTITION BY InvoiceNumber) AS NewDocTotal
  FROM PEDI_InvoiceDetail
)

UPDATE T
SET DocTotal = NewDocTotal;</code>

이 수정된 쿼리는 PEDI_InvoiceDetail 테이블의 InvoiceNumber 열을 포함하는 T라는 새 CTE를 생성합니다. 이를 통해 InvoiceNumber별로 CTE를 분할할 수 있으므로 각 송장에 대해 NewDocTotal 값이 올바르게 계산됩니다.

그런 다음 UPDATE 문은 계산된 NewDocTotal 값을 PEDI_InvoiceDetail 테이블의 DocTotal 열에 적용합니다.

위 내용은 SQL에서 CTE를 사용하여 테이블 레코드를 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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