>데이터 베이스 >MySQL 튜토리얼 >SQL의 WHERE 절에서 계산된 SELECT 절 값을 어떻게 참조할 수 있나요?

SQL의 WHERE 절에서 계산된 SELECT 절 값을 어떻게 참조할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2025-01-11 10:51:41439검색

How Can I Reference Calculated SELECT Clause Values in a WHERE Clause in SQL?

SQL WHERE 절과 계산된 SELECT 절 값: 실용 가이드

SQL 쿼리의 WHERE 절 내에서 SELECT 문에 정의된 별칭을 직접 참조하면 오류가 발생하는 경우가 많습니다. 이는 평가 순서 때문입니다. SELECT 절은 WHERE 절 다음에 처리됩니다.

다음 문제가 있는 예를 생각해 보세요.

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

BalanceDue 절이 평가될 때 WHERE이 아직 정의되지 않았기 때문에 이 쿼리는 실패합니다.

두 가지 효과적인 솔루션은 다음과 같습니다.

1. 하위 쿼리 사용:

이 접근 방식은 하위 쿼리를 사용하여 값을 미리 계산하므로 외부 쿼리의 WHERE 절에서 사용할 수 있습니다.

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

내부 쿼리는 BalanceDue을 계산하고, 외부 쿼리는 미리 계산된 결과를 기반으로 필터링합니다.

2. WHERE 절의 중복 계산:

또는 WHERE 절 내에서 직접 계산을 반복할 수도 있습니다.

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

이 방법은 더 간단하지만 표현식이 두 번 평가되므로 매우 복잡한 계산으로 인해 성능 문제가 발생할 수 있습니다.

성능 최적화:

SQL Server와 같은 최신 데이터베이스 시스템은 쿼리를 최적화하여 반복 참조가 있어도 복잡한 계산을 한 번만 실행하는 경우가 많습니다. 그러나 매우 복잡하거나 성능에 민감한 계산의 경우 WHERE 절 내에서 계산을 반복하는 것은 피해야 합니다.

자주 사용되는 계산 값의 경우 계산 열을 만드는 것이 장기적으로 더 효율적인 솔루션입니다. 이렇게 하면 계산된 값이 지속적으로 저장되어 쿼리 성능이 크게 향상됩니다.

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

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