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

為什麼我不能在 SQL WHERE 子句中使用別名?

Barbara Streisand
發布: 2025-01-05 11:43:44
原創
381 人瀏覽過

Why Can't I Use Aliases in My SQL WHERE Clause?

無法在WHERE 子句中引用別名

嘗試在SQL 語句的WHERE 子句中引用別名時,使用者可能會遇到錯誤表示指定的列不存在。出現此錯誤的原因是 SQL 執行遵循特定順序,即 WHERE 子句在 SELECT 子句之前計算。因此,執行 WHERE 子句時,無法辨識 SELECT 子句中定義的別名。

原因

在提供的範例中,以下查詢嘗試篩選行基於 SELECT 子句中建立的別名(_year):

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    _year > 90
登入後複製

此查詢將產生以下結果錯誤:

ERROR: column "_year" does not exist
登入後複製

解決方案

要解決此問題並在WHERE 子句中引用別名,必須重寫查詢以使用基礎列:

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    SUBSTRING(pk, 6, 2)::INT > 90
登入後複製

透過直接引用用於建立別名(_year)的欄位(pk),查詢將成功執行並檢索所需的結果。

以上是為什麼我不能在 SQL WHERE 子句中使用別名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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