PostgreSQL WHERE 子句和別名列:一個問題及其解決方案
在 PostgreSQL WHERE 子句中使用別名列(如「lead_state」)時,您可能會遇到指示該列不存在的錯誤。這是因為 PostgreSQL 在 SELECT 子句之前處理 WHERE 子句,與 MySQL 不同。 這意味著在評估 WHERE 子句時尚未定義別名。
使用通用表表達式 (CTE) 解決問題
一個強大的解決方案是利用通用表表達式(CTE)。 CTE 充當查詢中的臨時命名結果集。 這允許您在 CTE 中定義別名列,然後在主查詢的 WHERE 子句中引用它。以下是實現此功能的方法:
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';
以上是為什麼我的 PostgreSQL WHERE 子句無法辨識別名列,如何使用 CTE 修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!