在WHERE 子句中引用別名:探索
在PostgreSQL (psql) 中,無法直接在WHERE 子句中引用別名,因為到執行命令。在套用別名之前執行 WHERE 子句,導致錯誤「列「_year」不存在」。
出現這種情況是因為 WHERE 子句操作的是原始列名,而別名是稍後才應用的,在結果集生成期間。因此,執行 WHERE 子句時無法辨識別名。
要解決此問題,必須重寫查詢以直接在 WHERE 子句中使用原始列名。例如,考慮以下查詢:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90;
此查詢將失敗,並顯示錯誤「列「_year」不存在」。要修復此問題,必須將 WHERE 子句中的別名替換為原始列名:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90;
以上是為什麼不能在 PostgreSQL 查詢的 WHERE 子句中使用別名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!