집 >데이터 베이스 >MySQL 튜토리얼 >SQL WHERE 절에서 계산된 열 별칭을 사용할 수 있나요?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!