>데이터 베이스 >MySQL 튜토리얼 >내 PostgreSQL WHERE 절이 내 SELECT 별칭 열을 인식하지 못하는 이유는 무엇입니까?

내 PostgreSQL WHERE 절이 내 SELECT 별칭 열을 인식하지 못하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-20 20:34:16179검색

Why Doesn't My PostgreSQL WHERE Clause Recognize My SELECT Alias Column?

PostgreSQL: WHERE 절의 별칭 열 문제 해결

PostgreSQL의 WHERE 절이 SELECT 별칭을 인식하지 못하는 오류가 발생하는 이유는 데이터베이스의 쿼리 처리 순서 때문입니다. MySQL과 같은 다른 시스템과 달리 PostgreSQL은 WHERE앞에 SELECT 절을 처리합니다. 따라서 SELECT 목록 내에서만 정의된 별칭은 WHERE 절에서 사용할 수 없습니다.

효과적인 솔루션: 공통 테이블 표현식(CTE)

가장 효율적인 솔루션은 CTE(공용 테이블 표현식)를 사용하는 것입니다. CTE는 이름이 지정된 임시 결과 집합 역할을 하므로 별칭을 정의한 다음 나중에 쿼리에서 이를 참조할 수 있습니다.

<code class="language-sql">WITH jobs_refined AS (
    SELECT
        jobs.*,
        CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END AS lead_state
    FROM jobs
    LEFT JOIN lead_informations
        ON lead_informations.job_id = jobs.id
        AND lead_informations.mechanic_id = 3
)
SELECT *
FROM jobs_refined
WHERE lead_state = 'NEW';</code>

이 향상된 쿼리는 CTE jobs_refined를 사용하여 lead_state을 정의합니다. 그러면 CTE가 이미 별칭을 처리하고 정의했기 때문에 WHERE 절에서 이 별칭을 올바르게 활용할 수 있습니다. 이 접근 방식은 원래 오류를 방지하고 더 명확하고 읽기 쉬운 쿼리를 제공합니다.

위 내용은 내 PostgreSQL WHERE 절이 내 SELECT 별칭 열을 인식하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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