首頁 > 資料庫 > mysql教程 > 為什麼不能在 PostgreSQL 查詢的 WHERE 子句中使用別名?

為什麼不能在 PostgreSQL 查詢的 WHERE 子句中使用別名?

Linda Hamilton
發布: 2024-12-27 12:45:11
原創
953 人瀏覽過

Why Can't I Use Aliases in the WHERE Clause of a PostgreSQL Query?

在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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板