>데이터 베이스 >MySQL 튜토리얼 >SQL WHERE 절에서 계산된 열 별칭을 사용할 수 있나요?

SQL WHERE 절에서 계산된 열 별칭을 사용할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2025-01-11 10:36:41725검색

Can I Use a Calculated Column Alias in a SQL WHERE Clause?

SQL WHERE 절 및 계산된 열 별칭

SQL WHERE 절 내에서 계산된 열 별칭을 직접 사용하는 것은 일반적으로 지원되지 않습니다. 예를 들어 다음 쿼리는 실패합니다.

<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue
FROM Invoices
WHERE BalanceDue > 0; -- Error</code>

해결책:

이러한 제한을 극복하는 두 가지 효과적인 방법은 다음과 같습니다.

1. 하위 쿼리(중첩 쿼리):

이 접근 방식은 하위 쿼리 내에 계산을 캡슐화합니다.

<code class="language-sql">SELECT BalanceDue
FROM (
  SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue
  FROM Invoices
) AS x
WHERE BalanceDue > 0;</code>

2. 표현반복:

또는 SELECT 및 WHERE 절 모두에서 계산을 복제합니다.

<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue
FROM Invoices
WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>

성능 고려 사항:

하위 쿼리는 효율성이 떨어지는 것처럼 보일 수 있지만 SQL Server와 같은 최신 데이터베이스 시스템은 쿼리를 효과적으로 최적화하는 경우가 많습니다. 두 방법의 실행 계획은 동일한 경우가 많아 유사한 성능을 나타냅니다.

고급 최적화: 계산 열

여러 쿼리에서 반복적으로 사용되는 복잡한 계산의 경우 계산 열은 상당한 성능 이점을 제공합니다. 이 사전 계산된 열은 쿼리를 단순화하고 중복 계산을 줄입니다.

위 내용은 SQL WHERE 절에서 계산된 열 별칭을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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