首頁 > 資料庫 > mysql教程 > 為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?

為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?

Mary-Kate Olsen
發布: 2025-01-17 16:06:14
原創
331 人瀏覽過

Why Does My SQL Query Return

理解「Where 子句中的未知欄位」SQL 錯誤

可怕的「Where 子句中的未知列」錯誤是由 SQL 語句中的特定執行順序引起的。 SQL 從右向左處理查詢,這表示 WHERE 子句在 SELECT 子句之前計算。

我們舉個例子來說明:

<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
登入後複製

此處,WHERE 子句嘗試使用 user_name 進行過濾。但是,別名 user_name 僅在 SELECT 子句中定義。 因為先處理WHERE子句,還沒有遇到這個別名,導致「未知列」錯誤。

解:

有兩種簡單的方法可以解決此問題:

  1. WHERE子句中使用原始列名:這是最簡單、最有效的解決方案。 依其實際名稱而非別名引用該列:

    <code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
    登入後複製
  2. 將別名列括在括號中: 此方法強制資料庫在 評估 子句之前解析別名 WHERE。 雖然有效,但它通常比使用原始列名稱效率低:

    <code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
    登入後複製

透過了解 SQL 的求值順序並採用其中一個解決方案,您可以有效解決「Where 子句中的未知列」錯誤。

以上是為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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