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

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

Linda Hamilton
Linda Hamilton原創
2024-12-27 12:45:11899瀏覽

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