집 >데이터 베이스 >MySQL 튜토리얼 >내 PostgreSQL WHERE 절이 내 SELECT 별칭 열을 인식하지 못하는 이유는 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!